我寫一個C#程序,我想存儲一系列的XPath語句作爲字符串,並評估它們針對XmlDocument(或其他一些C#XML結構是否有用於此目的的更好的)並將結果值存儲在字典/對象中。C#評估多個XPath的針對XmlDocument
我面臨的挑戰是,我的XPath不能夠進行評估。
作爲一個非常簡單的例子,假設這是我的XML:
<root>
<a>
<child1 Id="Id1" Name="Name1" />
<child2 Id="Id2" Name="Name2" />
</a>
</root>
,例如,我的XPath之一是:
//a/*[@Id='Id1']/name()
(獲取a
的孩子的名字元素Id
屬性=「Id1」)
我試圖編寫的代碼的簡化版本是:
var xpath = @"//a/*[@Id='Id1']/name()";
var xml = @"<root><a><child1 Id='Id1' Name='Name1' /><child2 Id='Id2' Name='Name2' /></a></root>";
var doc = new XmlDocument();
doc.LoadXml(xml);
var navigator = doc.CreateNavigator();
string ChildName = (string)navigator.Evaluate(xpath);
但我得到錯誤,我的XPath有一個無效的令牌 - 我假設是name()
部分。
有沒有辦法做到這一點直接使用XPath語句而不是遍歷樹?
謝謝!
這工作! *謝謝*!!! 更大的問題是,如果使用的XmlDocument和導航的想法是正確的道路要走。如果在這種情況下這是正確的解決方案,您是否有任何想法? –
@JohnBustos使用的XmlDocument和導航是一個很好的方式,只要你打算只計算XPath語句像這樣去。我通常推薦LINQ to XML用於大多數.NET XML目的(您可以使用'XPathSelectElements'方法執行帶有LINQ to XML的XPath)。如果您預計會進行更多的XML操作,我建議您切換到該操作。 – DevNoob
非常感謝你! –