2013-04-16 85 views
0

我需要解析Java中的XML文件,並根據條件檢查一些支持。我試着用這個DOM。使用Java解析XML文件

<Config> 
     <Configuration> 
     <Descriptor> 
      <e id="0"> 
      <family>Rest</family> 
      <supportedList> 
       <_length>5</_length> 
       <_type>TypeX[]</_type> 
       <e id="0">value-1</e> 
       <e id="1">value-2</e> 
       <e id="2">value-3</e> 
       <e id="3">value-4</e> 
       <e id="4">value-5</e> 
      </supportedList> 
      </e> 
      <e id="1"> 
      <family>Rest1</family> 
      <supportedList> 
       <_length>5</_length> 
       <_type>TypeX[]</_type> 
       <e id="0">value1-1</e> 
       <e id="1">value1-2</e> 
       <e id="2">value1-3</e> 
       <e id="3">value1-4</e> 
       <e id="4">value1-5</e> 
      </supportedList> 
      </e> 
      </Descriptor> 
     </Configuration> 
    </Config> 

在上面的XML文件,我需要去通過「E」塊,然後描述符塊,然後搜索家庭 - Rest1然後通過supportedList迭代。檢查如果supportedList包含用戶提供的值(如果存在),則返回true。

我試過使用DOM解析器,但我無法正確解析文件。我正在處理的實際XML文件是20K行,並且數據太多。任何簡單的解決方案。

+1

向我們展示您到目前爲止嘗試過的方法。 – shakurov

+1

對於這個 – artbristol

+0

,XPath會比DOM更好,實際的文件具有相當敏感的數據,以及我在代碼中使用過的相同的東西,因此無法共享代碼。 –

回答

0
XPathFactory factory = XPathFactory.newInstance(); 
    XPath xpath = factory.newXPath(); 
    xPathExpression = xpath.compile("//family[text()='Rest1']/e"); 

    NodeList list = (NodeList) xPathExpression 
     .evaluate(xml, XPathConstants.NODESET); 

而在XPath語法上,只需搜索「XPath備忘單」即可。