出于兼容性原因,我想使用C#XmlWriter生成与另一个应用程序完全相同的XML。
但是我无法控制xml实体的编写方式:XmlWriter使用十六进制样式(&#x20AC),我想要十进制样式(&#8364)。
如何使用XmlWriter输出十进制样式?
示例代码
XmlWriterSettings writerSettings = new XmlWriterSettings
{
Encoding = Encoding.GetEncoding("iso-8859-1"),
};
using (XmlWriter writer = XmlWriter.Create(stream, writerSettings))
{
writer.WriteElementString("test", "€");
}
输出
<?xml version="1.0" encoding="iso-8859-1"?><test>€</test>
答案 0 :(得分:0)
你可以试试这个:
using (XmlWriter writer = XmlWriter.Create(stream, writerSettings))
{
string s = AntiXssEncoder.XmlEncode("€");
writer.WriteStartElement("test");
writer.WriteRaw(s);
writer.WriteEndElement();
}
因为AntiXssEncoder使用十进制编码。您必须使用WriteRaw
来执行此操作,因为XmlEncode已经对xml中的所有内容进行了编码。
不要这样做:
string s = AntiXssEncoder.XmlEncode("€");
writer.WriteElementString("test", s);
或者你的输出会逃脱'&amp;'字符到&#8364;