2012-10-24 100 views
0

我知道SO問題Failing to get element values using Element.getAttribute(),但因爲我是java begginer,所以我還有其他問題。我想要構建的是簡單的應用程序,它將讀取XML文件,然後將其與「黃金大師」進行比較。我的問題是:如何讀取java中的屬性的XML文件?

  • 我有很多不同的XML文件,它在屬性不同的
  • 的XML文件是相當大的。 (810線的申請 - 很難通過肉眼檢查)文件的

例子:

<DocumentIdentification v="Unique_ID"/> 
    <DocumentVersion v="1"/> 
    <DocumentType v="P81"/> 
    <SenderIdentification v="TEST-001--123456" codingScheme="A01"/> 
    <CreationDateTime v="2012-10-15T13:00:00Z"/> 
    <InArea v="10STS-TST------W" codingScheme="A01"/> 
    <OutArea v="10YWT-AYXOP01--8" codingScheme="A01"/> 
    <TimeSeries> 
<Period> 
<TimeInterval v="2012-10-14T22:00Z/2012-10-15T22:00Z"/> 
    <Resolution v="PT15M"/> 
     <Interval> 
      <Pos v="1"/> 
      <Qty v="500"/> 
     </Interval> 
     <Interval> 
      <Pos v="2"/> 
      <Qty v="500"/> 
     </Interval> 
     <Interval> 
      <Pos v="3"/> 
          <Qty v="452"/> 
        </Interval> 
        ... 
        ... 
        <Interval> 
      <Pos v="96"/> 
          <Qty v="891"/> 
        </Interval> 
       </Period> 
     </TimeSeries> 

上面提到的問題的解決方案的應用並沒有讓我更遠......我意識到,我可以投屬性NamedNodeMap但我不知道如何遍歷它編程

是的,我知道這聽起來很像「做功課」,但我真正需要的是至少小踢屁股,動我正確方向。感謝您的幫助

+0

究竟是比較兩個文件的目的是什麼?取決於您需要達到的目標,您可能會更輕鬆地完成任務。 –

+0

我的想法是:讀取文件並與預期值進行比較:特別是帶有InArea和OutArea的位,SendersIdentification - 這些代碼是特定於每個文件的,並且應該是唯一的名稱 –

+0

,在這種情況下,您可以使用Andreas_D有點暗示,namedNodeMap可以通過執行node.getAttributes()來獲得,然後使用getNamedItem(「v」)來獲得屬性 –

回答

1

的方法item(int index)應該有助於通過屬性迭代:

NamedNodeMap map = getItFromSomeWhere(); 
int i = 0; 
while ((Node node = map.item(i++)) != null) { 
    // node is ith node in the named map 
} 
+0

沃特森先生是多麼的明顯......我現在覺得完全愚蠢:) –

+0

只是另外一個問題 - 如果我做'node.toString()'它會打印捐贈者嗎? (愚蠢啞巴) –

+0

我敢打賭你正在尋找'Node#getNodeValue'這將是屬性值(如果節點是屬性)。 'Node#getNodeName'是屬性名稱。 –