ルート要素のノードを取得するコードがあります。
xmlNodes = rootElement.SelectNodes("DefinitionName");
存在するノードを返しません。デバッガーで、rootElement を展開して DefinitionName を見つけることができます。どうやら問題は、ファイルに名前空間が定義されていることです (以下の XML を参照)。MSDNは、ノードを返すには次のようなことをしなければならないと言っています。
注: これは私のコードとは関係ありません。これは MSDN の例です。
XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
nsmgr.AddNamespace("ab", "http://www.lucernepublishing.com");
XmlNodeList nodelist = doc.SelectNodes("//ab:book", nsmgr);
2 つの質問があります。
- 名前空間が重要なのはなぜですか? ノードが必要で、それが存在する場合は、それを私に渡してください。
- 私のアプリは多くの XML ファイルを処理します。名前空間 ( ) を指定するにはどうすればよいです
nsmgr.AddNamespace()
か? 最初にファイルを取得するためにファイルを解析する必要がありますか?
不安に満ちた長い道のりを歩んでいると感じずにはいられません。
これは XML です。
<?xml version="1.0" encoding="utf-8"?>
<SessionStateInfo xmlns:i="http://www.w3.org/2001/XMLSchema-instance"
z:Id="1" z:Type="Company.Apps.MoreHere.Session.SessionStateInfo"
z:Assembly="assembly info here"
xmlns:z="http://schemas.microsoft.com/2003/10/Serialization/"
xmlns="http://schemas.datacontract.org/2004/07/MoreHere.Session">
<CoaterNumber>25</CoaterNumber>
<DefinitionName z:Id="2">Two Line</DefinitionName>
<EnableManualMode>true</EnableManualMode>