簡體   English   中英

使用 DOM Java 讀取 XML 文件

[英]Read XML file using DOM Java

下面是我的 XML 文件,

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<SampleDTO>
<mInfo>
    <aName>FMgr</aName>
</mInfo>

<Result xsi:type="ResultDTO">
    <pname>Module1</pname>
    <proname>com.test.Manager</proname>
    <caseResult xsi:type="ResultDTO">
        <failure>0</failure>
        <aResult xsi:type="ARDTO">
            <aName>AAAA</aName>
        </aResult>
        <aResult xsi:type="ARDTO">
            <aName>BBBB</aName>
        </aResult>
    </caseResult>
</Result>

<Result xsi:type="ResultDTO">
    <pname>Module2</pname>
    <proname>com.test.Manager</proname>
    <caseResult xsi:type="ResultDTO">
        <failure>0</failure>
        <aResult xsi:type="ARDTO">
            <aName>CCCC</aName>
        </aResult>
        <aResult xsi:type="ARDTO">
            <aName>DDDD</aName>
        </aResult>
    </caseResult>
</Result>

</SampleDTO>

Java代碼:

File file = new File("...//filepath");  
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();  
DocumentBuilder db = dbf.newDocumentBuilder();  
Document doc = db.parse(file);  
doc.getDocumentElement().normalize(); 


NodeList nodeList = doc.getElementsByTagName("caseResult");  
for (int itr = 0; itr < nodeList.getLength(); itr++)   
{  
    Node node = nodeList.item(itr);  
    if (node.getNodeType() == Node.ELEMENT_NODE)   
    {  
        Element eElement = (Element) node;
        System.out.print(eElement.getElementsByTagName("aName").item(0).getTextContent());  
        
    } 
}

我可以通過在 java 中使用 DOM 來獲取 caseResult 的列表。 我想同時獲得caseResult<aName>FMgr</aName><proname>com.test.Manager</proname> 合而為一。

嘗試以下解決方案

NodeList resultNodeList = document.getElementsByTagName("Result");
for (int i = 0; i < resultNodeList.getLength(); i++) {
    Element resultNodeElement = (Element) resultNodeList.item(i);
    String proname = resultNodeElement.getElementsByTagName("proname").item(0).getTextContent();
          
    Element caseResultElement = (Element) resultNodeElement.getElementsByTagName("caseResult").item(0);
          
    NodeList aResultNodeList = caseResultElement.getElementsByTagName("aResult");
    for (int y = 0; y < aResultNodeList.getLength(); y++) {
        Element aResultElement = (Element) aResultNodeList.item(i);
        String aName = aResultElement.getElementsByTagName("aName").item(0).getTextContent();
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM