【发布时间】:2018-12-20 09:39:39
【问题描述】:
我有一个 XML 文件,我需要遍历 XML 文件并比较节点属性值。条件是节点的元素中的属性应该有一个特定的值集。
让我通过下面的示例让这更容易理解:
<Node name="SomeName">
<Element attribute="somevalue"/>
</Node>
<Node name="SomeNameMore">
<Element attribute="somevalue"/>
</Node>
<Node name="SomeNameEtc.">
<Element attribute="somevaluenotmatch"/>
</Node>
<Node name="SomeName">
<Element attribute="somevalue"/>
</Node>
XML 文件中有 100 个相似的节点。
第一个条件:匹配属性'somevalue'
第2个条件:比较第1个条件(结果)中的所有节点以获取节点中的属性名称。
我做了如下:
XmlTextReader Reader = new XmlTextReader("C:\\TEST\test.xml");
XmlDocument doc = new XmlDocument();
doc.Load(Reader);
XPathNavigator nav = doc.CreateNavigator();
XmlElement rootNode = doc.DocumentElement;
XPathExpression expr;
expr = nav.Compile("//Element[@attribute='somevalue']");
XPathNodeIterator iterator = nav.Select(expr);
foreach (XmlElement item in iterator)
{
//how do go back to node here (whose element has attribute 'somevalue' and compare with the next node if the attribute 'name' of Node matches
} ;
【问题讨论】:
-
表示你想检索所有
Element与somevalue具有相同值匹配的Nodes,对吧? -
是的,这是正确的,然后在提取的数据中比较节点的属性“名称”。