您好我正在使用XPathNodeIterator在XML文檔下的XML節點列表中進行迭代。當條件匹配時迭代,我需要在當前節點下的特定值。取而代之的,是的SelectSingleNode返回從其它父節點節點...讓我舉一個例子:當我在XPathNodeIterator.Current.SelectSingleNode下搜索時,它只是在整個XML文檔中搜索
XPathNavigator SourceReqNav = // Load this using an xml;
XmlNamespaceManager manager = new XmlNamespaceManager(SourceReqNav.NameTable);
SourceReqNav.MoveToRoot();
XPathNodeIterator nodeIterator = SourceReqNav.Select(parentPath, manager);
while (nodeIterator.MoveNext())
{
//If condition matches at nodeIterator.Current node, Executing a partial xpath related to
//only that current node
XPathNavigator singleNode = nodeIterator.Current.SelectSingleNode(xpath, namespaceManager);
// Here at above line, It should return null as Child node doesn't exist but It
// searches in whole xml and finding the matching one..even though the XPATH is kind of
// partial and applicable to only that node structure.
}
示例XML:
<RootNode>
<Element id=1>
<Address>
<Name> </Name>
<ZipCode>456</ZipCode>
<Street> </Street>
</Address>
</Element>
<Element id=2>
</Element>
<Element id=3> </Element>
</RootNode>
比方說,我遍歷所有的「元素」,並試圖找到元素id = 2的「地址」。 現在,迭代時讓我們說我在「元素id = 2」。當我找到節點時,我會從當前節點(nodeIterator.Current)中選擇一個名爲「Zip」的節點。爲此,我使用xpath作爲「/ Address/ZipCode」(格式可能是錯誤的,因爲這只是例子)。在這種情況下,它應該返回我空,而是從「元素ID = 1」返回郵編
任何幫助將是可觀的..
我希望更多的人瞭解'XElement'如何使用LINQ。 – gunr2171
那麼,我確實使用LINQ to XML。但是這是更加可定製的框架努力的一部分,用戶可以簡單地使用XPATH(擴展)通過配置文件更改映射。無論如何,這不是我要找的。我很欣賞你花時間去看看。 – Reg