按文本属性获取XML节点ID

时间:2015-11-13 11:48:12

标签: c# xml

我有一个XML文件,下面显示了它的一部分。

 <node id="413" text="plant1">
   <node id="419" text="Detail Reports">
     <node id="424" text="Bulk Lactol" reportid="14" nodetype="1"/>
     <node id="427" text="Effluent" reportid="17" nodetype="1"/>
     <node id="425" text="Pasteurisers" reportid="15" nodetype="1"/>
     <node id="421" text="Tank 8" reportid="12" nodetype="1"/>
     <node id="420" text="Tank 9" reportid="11" nodetype="1"/>
   </node>
   <node id="422" text="Summary Reports">
     <node id="423" text="plant1 Summary" reportid="13" nodetype="1"/>
     <node id="426" text="Effluent Summary" reportid="16" nodetype="1"/>
   </node>
 </node>

我试图通过'text'值获取'node id'。 我尝试了以下内容。

string y = "Bulk Lactol"
XmlDocument doc = new XmlDocument();
doc.Load("C:\\Users\\Joe\\Desktop\\wt.xml");
XmlNode node = doc.DocumentElement.SelectSingleNode(y);
string x = Convert.ToString(node);

但我得到一个例外:

  

'Bulk Lactol'有一个无效的令牌。

我发现了一些类似的问题,但我对XML不太熟悉,所以我无法适应我的问题,感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

SelectSingleNodeSelectNodes接受XPath字符串作为参数。

您可以使用以下XPath来查找此项目:

string y = "Bulk Lactol";

XmlDocument doc = new XmlDocument();
doc.Load("C:\\Users\\Joe\\Desktop\\wt.xml");

XmlNode node = doc.SelectSingleNode(@"//node[@text='Bulk Lactol']");
string x = node.InnerText;

//node[@text='Bulk Lactol'] XPath意味着

  

层次结构中具有值为“Bulk Lactol”

的属性“text”的任何元素