首页 新闻 搜索 专区 学院

怎么这样写XML有问题啊?

0
[已解决问题] 解决于 2014-08-13 21:24

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>

吴顶天的主页 吴顶天 | 初学一级 | 园豆:39
提问于:2014-07-01 09:09
< >
分享
最佳答案
0

你这个问题起始很简单,因为你用了writer.WriteString,自然把字符串当作XML的string形式输出,此时就会对字符串进行编码处理。

尝试下writer是否有别的方法能解决这个问题。

此外,你的内容已经是xml格式了,为什么要使用xmlwriter类型的对象操作呢?

直接使用Console.Write就能简单达到目的了。xmlwriter对象是用来构建xml架构数据的。

奖励园豆:5
519740105 | 大侠五级 |园豆:5810 | 2014-08-07 10:51
其他回答(2)
0

&lt; 是转义后的<

&gt; 是转义后的>

在最后输出xml 的时候,可以处理下这个转移

Sky.Grain | 园豆:308 (菜鸟二级) | 2014-07-01 09:16

我知道这是转义字符,那怎么处理啊

支持(0) 反对(0) 吴顶天 | 园豆:39 (初学一级) | 2014-07-01 13:50
0

应该是你用了这个Encoding.GetEncoding("utf-16")编码的原因吧。

angelshelter | 园豆:9678 (大侠五级) | 2014-07-01 09:26

因为客户有要求输出的XML内容里 encoding="utf-16" 啊,那怎么处理这个问题啊

支持(0) 反对(0) 吴顶天 | 园豆:39 (初学一级) | 2014-07-01 13:49
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册