如何防止xml元素内的文本被编码?

时间:2014-08-05 17:34:09

标签: c# xml xml-serialization xmlserializer

我在C#应用程序中编码有点麻烦。

所以,我正在尝试做的是获取一个xml元素并在其中填充一些数据,以便我可以将该数据通过文件传输到另一个应用程序。但是,每当我去序列化该元素时,元素内部的xml文本都会被编码。有没有办法阻止它被编码?

所以我可以拥有的一个例子是这样的:

<element attribute="foo">
    <![CDATA[ some data here.... ]]>
</element>

但实际输出的是:

<element attribute="foo">
    &lt![CDATA[ some data here.... ]] &gt
</element>

这是我的序列化器:

XmlDocument doc = new XmlDocument();

StringBuilder xml = new StringBuilder();
XmlSerializer serializer = new XmlSerializer( objToSerialize.GetType() );
XmlWriterSettings settings = new XmlWriterSettings()
{
    OmitXmlDeclaration = true,
    Indent = true
};

using ( StringWriter writer = new StringWriter( xml ) )
using ( XmlWriter xmlWriter = XmlWriter.Create( writer, settings ) )
{
    XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
    ns.Add( "", "" ); // Removes the xsd & xsi namespace declarations from the xml
    serializer.Serialize( xmlWriter, objToSerialize, ns );
}

return xml.ToString()

如何防止这种情况发生?谢谢!

1 个答案:

答案 0 :(得分:0)

由于您在StringBuilder中生成XML,XmlWriter不会自动检查CData部分。您必须使用XmlWriter方法手动生成xml,例如WriteCData或使用其他框架,例如Linq to Xml。