エラー:”名前空間マネージャまたは XsltContext が必要です” が出た時の対処法

表示されたエラーメッセージ

名前空間マネージャまたは XsltContext が必要です。
このクエリには、プレフィックス、変数、またはユーザー定義の関数があります




Namespace Manager or XsltContext needed. 
This query has a prefix, variable, or user-defined function.




エラーが発生したプログラム

XmlNamespaceManager xmlnsManager;
XmlDocument         xmlDoc = new XmlDocument();
 
xmlDoc.Load( "test.xml" );
 
xmlnsManager = new XmlNamespaceManager( xmlDoc.NameTable );
xmlnsManager.AddNamespace("ns", "http://mws.amazonservices.com/schema/Products/2011-10-01");
 
// ここで例外が発生する
XmlNodeList offerNodeList = xmlDoc.SelectNodes( "/ns:Product/ns:Price" );



理由
xpathのクエリにネームスペースを付与しているが、NamespaceManagerが指定されていない


対処方法
SelectNodes()メソッド実行時に、XmlNamespaceManagerを引数で渡す

XmlNodeList offerNodeList = xmlDoc.SelectNodes( "/ns:Product/ns:Price" );
    ↓
XmlNodeList offerNodeList = xmlDoc.SelectNodes( "/ns:Product/ns:Price", xmlnsManager );

関連記事

コメントを残す

メールアドレスが公開されることはありません。