我在C#应用程序中编码有点麻烦。
所以,我正在尝试做的是获取一个xml元素并在其中填充一些数据,以便我可以将该数据通过文件传输到另一个应用程序。但是,每当我去序列化该元素时,元素内部的xml文本都会被编码。有没有办法阻止它被编码?
所以我可以拥有的一个例子是这样的:
<element attribute="foo">
<![CDATA[ some data here.... ]]>
</element>
但实际输出的是:
<element attribute="foo">
<![CDATA[ some data here.... ]] >
</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()
如何防止这种情况发生?谢谢!
答案 0 :(得分:0)
由于您在StringBuilder
中生成XML,XmlWriter
不会自动检查CData部分。您必须使用XmlWriter
方法手动生成xml,例如WriteCData
或使用其他框架,例如Linq to Xml。