0

現在、次の形式で XML を逆シリアル化しようとしています。

<content:encoded>![CDATA[...

そして、次のようなプロパティを持つオブジェクトがあります。

[XmlElementAttribute("content")]
public string Content { get; set; }

ただし、XML には常に値があるにもかかわらず、コード内のプロパティは常にnull?

4

2 に答える 2

3

contentは名前空間です -encodedは要素名です。したがって、次のXmlElementAttributeようになります。

[XmlElement(Name="encoded", Namespace="<whatever namespace 'content' refers to in your XML>")]
public string Content { get; set; }
于 2012-10-12T21:28:18.903 に答える
3

contentあなたの例では名前空間です。要素名は実際にはencodedそのため、プロパティをそのようにマークする属性を使用する必要があります。

[XmlElement("encoded", Namespace => "custom-content-namespace")]
public string Content { get; set; }

含まれている XML で名前空間を宣言する必要があることに注意してください。

<content:encoded xmlns:content="custom-content-namespace">![CDATA[...

これは、すべての子ノードに同じ名前空間がプレフィックスとして付けられることも意味します。コンテンツにとってはそれほど問題ではありませんCDATAが、逆シリアル化しようとしている他の要素がある場合に備えて。

これに関連する質問については、「C# で XmlSerializer.Deserialize() を使用して親の名前空間外の子ノードを逆シリアル化する」を参照してください。

于 2012-10-12T21:28:42.860 に答える