1

ASP.NET 2.0 Web サイトに、整形式の XML を表す文字列があります。現在、それを使用して XmlDocument オブジェクトを作成し、Web フォームで表示するために XSL 変換を実行しています。XML 入力に名前空間が含まれ始めるまで、すべてが正常に動作していました。

この文字列を読み取って名前空間を許可するにはどうすればよいですか?

以下に現在のコードを含めました。文字列ソースは、WordPress RSS フィードの HTML エンコード ノードから取得されます。

XPathNavigator myNav= myPost.CreateNavigator();
XmlNamespaceManager myManager = new XmlNamespaceManager(myNav.NameTable);
myManager.AddNamespace("content", "http://purl.org/rss/1.0/modules/content/");
string myPost = HttpUtility.HtmlDecode("<post>" +
    myNav.SelectSingleNode("//item[1]/content:encoded", myManager).InnerXml +
    "</post>");
XmlDocument myDocument = new XmlDocument();
myDocument.LoadXml(myPost.ToString());

エラーは最後の行にあります:

「System.Xml.XmlException: 'w' は宣言されていない名前空間です。12 行目、201 の位置。System.Xml.XmlTextReaderImpl.Throw(Exception e) で ...」

4

2 に答える 2

1

あなたのコードは正しく見えます。

ロードしようとしている xml ドキュメントに問題がある可能性があります。XML ドキュメントでプレフィックスを宣言せずに、"w" プレフィックスを持つ要素が必要です。

たとえば、次のものが必要です。

<test xmlns:w="http://...">
  <w:elementInWNamespace />
</test>

(ドキュメントにはおそらく がありませんxmlns:w="http://")

于 2008-09-23T14:36:18.553 に答える
0

直感 - //content:encoding で宣言されている名前空間の 1 つが削除されています (おそらく、リテラル .InnerXml プロパティを使用しているため)

myNav DOMで評価される「w」名前空間は何ですか? post ノードに xmlns:w= を追加する必要があります。おそらく他にもあるでしょう。

于 2008-09-23T14:36:36.680 に答える