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將始終以相同的順序返回標題和正文列,以便它們始終匹配嗎?或者我甚至可以假設列總是按文檔順序返回?
您已經測試了嗎?這聽起來像是一個相當明顯的問題,所以可能有關於它的文檔。 –
XPath自頂向下遍歷,所以如果你問你是否會收回「姓名,年齡,電子郵件」而不是隨機排序,那麼你是正確的。 – JWiley
我已經測試過它,但它在15分鐘內找不到任何文檔,聲明XPath將以文檔順序返回兒童。所以,如果你能指出我將會完美的規格 – Will