2015-11-13 114 views
0

我有一個XML文件,其中的一部分顯示在下面。通過文本屬性獲取XML節點ID

<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> 

我想通過'文本'值得到'節點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); 

但我得到一個異常:

'散裝乳醇' 具有無效令牌。

我發現了一些類似的問題,但我對XML不是很熟悉,所以我在修改它們時遇到了問題,感謝您的幫助。

回答

3

SelectSingleNode and SelectNodes accept XPath string作爲參數。

您可以使用以下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意味着

其中有一個屬性「文本」與價值「散裝乳醇」

層級中的任何元素
+0

不要忘記選擇@id –