Hen*_*gyi 9 c# xml serialization
我已经定义了以下类:
public class Root
{
public string Name;
public string XmlString;
}
Run Code Online (Sandbox Code Playgroud)
并创建了一个对象:
Root t = new Root
{ Name = "Test",
XmlString = "<Foo>bar</Foo>"
};
Run Code Online (Sandbox Code Playgroud)
当我使用XmlSerializer类来序列化这个对象时,它将返回xml:
<Root>
<Name>Test</Name>
<XmlString><Foo>bar</Foo></XmlString>
</Root>
Run Code Online (Sandbox Code Playgroud)
我如何使它不编码我的XmlString内容,以便我可以获得序列化的xml
<XmlString><Foo>bar</Foo></XmlString>
Run Code Online (Sandbox Code Playgroud)
谢谢,伊恩
Cam*_*and 13
您可以将自定义序列化限制为仅需要特别注意的元素.
public class Root
{
public string Name;
[XmlIgnore]
public string XmlString
{
get
{
if (SerializedXmlString == null)
return "";
return SerializedXmlString.Value;
}
set
{
if (SerializedXmlString == null)
SerializedXmlString = new RawString();
SerializedXmlString.Value = value;
}
}
[XmlElement("XmlString")]
[Browsable(false)]
[EditorBrowsable(EditorBrowsableState.Never)]
public RawString SerializedXmlString;
}
public class RawString : IXmlSerializable
{
public string Value { get; set; }
public XmlSchema GetSchema()
{
return null;
}
public void ReadXml(System.Xml.XmlReader reader)
{
this.Value = reader.ReadInnerXml();
}
public void WriteXml(System.Xml.XmlWriter writer)
{
writer.WriteRaw(this.Value);
}
}
Run Code Online (Sandbox Code Playgroud)
如果这是可能的,我会感到非常惊讶。假设您可以这样做 - 如果属性中的 XML 格式错误会发生什么 - 一切都会崩溃。
我希望您需要为这种情况编写自己的序列化,或者使 XmlString 字段成为包含 foo 字段的结构。
归档时间: |
|
查看次数: |
5511 次 |
最近记录: |