現在、次の形式で XML を逆シリアル化しようとしています。
<content:encoded>![CDATA[...
そして、次のようなプロパティを持つオブジェクトがあります。
[XmlElementAttribute("content")]
public string Content { get; set; }
ただし、XML には常に値があるにもかかわらず、コード内のプロパティは常にnull
?
現在、次の形式で XML を逆シリアル化しようとしています。
<content:encoded>![CDATA[...
そして、次のようなプロパティを持つオブジェクトがあります。
[XmlElementAttribute("content")]
public string Content { get; set; }
ただし、XML には常に値があるにもかかわらず、コード内のプロパティは常にnull
?
content
は名前空間です -encoded
は要素名です。したがって、次のXmlElementAttribute
ようになります。
[XmlElement(Name="encoded", Namespace="<whatever namespace 'content' refers to in your XML>")]
public string Content { get; set; }
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() を使用して親の名前空間外の子ノードを逆シリアル化する」を参照してください。