以下は私が自分で書いた XML 読み取りテストです
次のようにコードをコピーします。
java.util.Iteratorをインポートします。
java.io.BufferedReaderをインポートします。
java.io.ファイルをインポートします。
インポート java.io.IOException;
インポートjava.io.InputStreamReader;
インポート java.net.MalformedURLException;
org.dom4j.* をインポートします。
org.dom4j.io.SAXReader をインポートします。
パブリック クラス XmlRead {
static StringBuilder sBuilder = new StringBuilder();
public static void main(String[] args) throws IOException {
BufferedReader bReader = new BufferedReader(new InputStreamReader(
システム.in));
文字列パス = null;
System.out.println("XML ファイルの絶対パスとファイル名を入力してください:/n");
パス = bReader.readLine();
sBuilder.append("XMLファイル内容の出力開始/n");
ドキュメント document = null;
試す {
ドキュメント = 読み取り(パス);
sBuilder.append(パス + "/n");
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (DocumentException e) {
e.printStackTrace();
}
要素ルート = getRootElement(document);
if (root == null) {
System.out.print("ルートノードが取得できませんでした");
戻る;
}
// XMLドキュメントのエンコード形式を取得します。
文字列 encString = document.getXMLEncoding();
sBuilder.append("<?xml version=/"1.0/" エンコーディング=/"" + encString
+ "/">/n");
sBuilder.append(elementText(root, attText(root), 0));
System.out.println(getIterator(root, 0) + "</" + root.getName() + ">");
}
/**
* 再帰ノード
*
* @説明
* @param要素
* @param レベル
* レベル
* @戻る
*/
private static String getIterator(Element 要素, int lvl) {
レベル+= 1;
for (Iterator i = element.elementIterator(); i.hasNext();) {
要素 e = (要素) i.next();
sBuilder.append(elementText(e, attText(e), lvl));
getIterator(e, lvl);
int カウント = e.nodeCount();
if (カウント > 0) {
for (int j = 0; j < lvl; j++) {
sBuilder.append(" ");
}
}
sBuilder.append("</" + e.getName() + ">/n");
}
sBuilder.toString() を返します。
}
/**
* 現在のノードの属性の文字列値を取得します
*
* @説明
* @param要素
* 現在のノード
* @戻る
*/
private static String attText(Element 要素) {
文字列 str = " ";
for (int i = 0; i < element.attributeCount(); i++) {
属性属性 = element.attribute(i);
str +=attribute.getName()+"=/""+attribute.getValue()+"/"";
}
文字列を返します。
}
/**
* 現在の要素のテキスト値を取得します
*
* @説明
* @param要素
* 現在の要素ノード
* @paramテキスト
* 属性値
* @param レベル
* レベル
* @戻る
*/
private static String elementText(Element 要素, String テキスト, int lvl) {
文字列 str = "";
for (int i = 0; i < lvl; i++) {
str += " ";
}
str += "<" + element.getName();
if (テキスト != null && テキスト != "") {
str += テキスト;
}
//dom4j には hasChild 属性またはメソッドがないため、子ノードが存在するかどうかを判断するには、nodeCount() メソッドを使用する必要があります。
int カウント = element.nodeCount();
if (カウント == 0) {
戻り値 str += ">";
}
return str += ">/n";
}
/**
*
* @description XML ファイルを読み込みます
* @paramファイル
* XML ファイルのパス (ファイル名を含む)
* @return ドキュメントドキュメント
* @throws MalformedURLException
* @throws DocumentException
*/
public static Document read(String file) が MalformedURLException をスローします。
ドキュメント例外 {
SAXReader リーダー = new SAXReader();
ドキュメント document = Reader.read(new File(file));
書類を返送する。
}
/**
* Document ドキュメントのルート ノードを取得します
*
* @paramドキュメント
* @戻る
*/
public static Element getRootElement(Document document) {
document.getRootElement()を返します;
}
}