FileStream fs = new FileStream(@"c:\XmlPhotoTemplate.xml", FileMode.Truncate, FileAccess.ReadWrite);
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
settings.Encoding = new UTF8Encoding(false);
settings.ConformanceLevel = ConformanceLevel.Auto;
XmlWriter writer = XmlWriter.Create(Console.Out, settings);
writer.WriteString(GetXmlPhotoTemplate());
writer.Close();
fs.Close();
private static string GetXmlPhotoTemplate()
{
string strResult = string.Empty;
string resourceName = string.Format("{0}.{1}", MethodBase.GetCurrentMethod().DeclaringType.Namespace, "XmlPhotoTemplate.xml");
using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName))
{
if (stream != null)
{
byte[] buffer = new byte[stream.Length];
stream.Read(buffer, 0, buffer.Length);
strResult = Encoding.GetEncoding("utf-16").GetString(buffer);
}
}
return strResult;
}
输出的结果却是:
<?xml version="1.0" encoding="utf-16"?>
<Media name="%filename%" propertyID="%eid%">
<Provider id="6"/>
<Subcategory id="%subcategoryid%"/>
<Rooms>
<Room id=""/>
<Room id=""/>
</Rooms>
<Activities>
<Activity type="Acquisition" application="SCORE" time="%timestamp%"/>
</Activities>
</Media>
你这个问题起始很简单,因为你用了writer.WriteString,自然把字符串当作XML的string形式输出,此时就会对字符串进行编码处理。
尝试下writer是否有别的方法能解决这个问题。
此外,你的内容已经是xml格式了,为什么要使用xmlwriter类型的对象操作呢?
直接使用Console.Write就能简单达到目的了。xmlwriter对象是用来构建xml架构数据的。
< 是转义后的<
> 是转义后的>
在最后输出xml 的时候,可以处理下这个转移
我知道这是转义字符,那怎么处理啊
应该是你用了这个Encoding.GetEncoding("utf-16")编码的原因吧。
因为客户有要求输出的XML内容里 encoding="utf-16" 啊,那怎么处理这个问题啊