0
我試圖解析一個XML文檔,出於某種原因,我無法從任何東西獲取任何子節點。我已經厭倦我所知道的一切。我最初嘗試使用Dom4J,但在命名空間方面遇到很大困難。現在我試圖使用標準的DOM解析器。Java Dom解析器不會返回子節點
我已閱讀了oracle教程以及其他人,但沒有看到爲什麼我最基本的功能失敗的建議。
我會分享我的代碼開始:
package testingtemp;
import org.w3c.dom.*;
import javax.xml.parsers.*;
import java.io.*;
public class DomParser {
public static void main(String args[]){
try{
File inputFile = new File("C:\\Users\\jhamric\\Desktop\\Camt54.xml");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(inputFile);
doc.getDocumentElement().normalize();
System.out.println("Root Element: "+doc.getDocumentElement().getChildNodes());
}catch (Exception e){
e.printStackTrace();
}
}
}
所以乾脆我想要做的是還給孩子節點爲根(這是「文件」)。有一個子節點應該被退回。
<?xml version="1.0"?>
-<Document xmlns="urn:iso:std:iso:20022:tech:xsd:camt.054.001.04">
-<BkToCstmrDbtCdtNtfctn>
+<GrpHdr>
-<Ntfctn>
<Id>161RD2521JI00XSZ</Id>
<CreDtTm>2016-01-27T13:25:21</CreDtTm>
這是我的XML的只是一小部分,但你可以清楚地看到thatBkToCstmrDbtCdtNtfctn應返回作爲打印屏幕的子節點。相反,我的控制檯輸出看起來是這樣的:
Root Element: [Document: null]
它報告回到正確的根元素,但隨後告訴我,有沒有子節點。是什麼賦予了?任何幫助將不勝感激!
完美的工作。所以它按照我的意願返回了正確的節點。現在,如果我想進入該節點,你會介意解釋嗎?假設該節點被稱爲「BkToCstmrDbtCdtNtfctn」。 – jesric1029
@ jesric1029只是使用節點或元素的界面來導航文檔和訪問屬性。不幸的是DOM是一個過於複雜和不直觀的API ,,, – wero
謝謝。我相信我想要的是在具有屬性的節點上使用的「getTextContent」名稱。這樣做的目標是將XML文件解析爲表格。通過能夠將具有屬性的每個節點解析爲單個列表,我想我可以保存到表格中。 – jesric1029