私は、一連のXPath文を文字列として格納し、XMLDocument(または他のC#XML構造)と比較して評価するC#プログラムを作成しています)、結果の値を辞書/オブジェクトに格納します。C#XmlDocumentに対して複数のXpathを評価する
私の挑戦は、私のXPathsが評価できないということです。非常に簡単な例として
、これは私の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とNavigatorを使用するというアイデアが正しい方法であるかどうかです。この場合、これが適切な解決策であれば、あなたはどんな考えを持っていますか? –
@JohnBustos XmlDocumentとナビゲータを使用すると、このようなXPath文だけを評価する予定がある限り、上手く行くことができます。私は通常、ほとんどの.NET XMLの目的にLINQ to XMLを推奨しています(XPathはLINQ to XMLでXPathSelectElementsメソッドを使って実行できます)。もっとたくさんのXML操作を行うことが予想される場合は、それに切り替えることをお勧めします。 – DevNoob
ありがとうございました!!!! –