2013-02-07 65 views
4

我有以下XML結構。XPath NodeList順序(Java)

<?xml version="1.0" encoding="UTF-8"?> 
<root> 
    <header> 
    <row> 
     <column n="name" /> 
     <column n="age" /> 
     <column n="email" /> 
    </row> 
    </header> 
    <body> 
    <row> 
     <column>Foo</column> 
     <column>99</column> 
     <column>[email protected]</column> 
    </row> 
    </body> 
</root> 

我正在使用以下XPath表達式來獲取標題列並同樣獲取正文列。

PathExpression headerExpr = xPath.compile("/root/header/row/column/@n"); 
NodeList headerColumns = (NodeList) headerExpr.evaluate(document, XPathConstants.NODESET); 
PathExpression bodyExpr = xPath.compile("/root/body/row/column"); 
NodeList bodyColumns = (NodeList) bodyExpr.evaluate(document, XPathConstants.NODESET); 
for (int i = 0; i < headerColumns.getLength(); i++) { 
       System.out.println((Attr) headerColumns .item(i)).getValue() + ": " + bodyColumns.item(i).getTextContent()); 
     } 

我可以假設XPath將始終以相同的順序返回標題和正文列,以便它們始終匹配嗎?或者我甚至可以假設列總是按文檔順序返回?

+0

您已經測試了嗎?這聽起來像是一個相當明顯的問題,所以可能有關於它的文檔。 –

+2

XPath自頂向下遍歷,所以如果你問你是否會收回「姓名,年齡,電子郵件」而不是隨機排序,那麼你是正確的。 – JWiley

+0

我已經測試過它,但它在15分鐘內找不到任何文檔,聲明XPath將以文檔順序返回兒童。所以,如果你能指出我將會完美的規格 – Will

回答