Привет, я повторяю список узлов XML в документе XML с помощью XPathNodeIterator. Во время итерации, если условие совпадает, мне нужно конкретное значение под этим текущим узлом. Вместо этого SelectSingleNode возвращает узел из другого родительского узла ... Позвольте мне привести пример:
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>
Скажем, я перебираю все «Element» и пытаюсь найти «Address», где element id = 2. Теперь, во время итерации, допустим, я нахожусь на «Element id = 2». Когда я нашел узел, я скажу, что из текущего узла (nodeIterator.Current) выберите единственный узел с именем «Zip». Для этого я использую xpath как «/ Address / ZipCode» (форматирование здесь может быть неправильным, поскольку это только для примера). В этом случае он должен вернуть мне null, но вместо этого он возвращает ZipCode из "Element id = 1"
Любая помощь будет заметна ..
XElement
о том, как с ним можно использовать LINQ. - person gunr2171   schedule 25.09.2013