创建动态xml提要会自动编码某些标记

时间:2011-04-22 20:29:23

标签: c# asp.net xml

我正在使用以下代码动态创建xml文件

var xrFeed = new XmlTextWriter(Response.OutputStream, Encoding.UTF8);
xrFeed.WriteStartDocument();
xrFeed.WriteStartElement("ads");


foreach (var i in items)
{
    xrFeed.WriteStartElement("ad");
    xrFeed.WriteElementString("id", "<![CDATA[" + i.AdId+ "]]>");                
    xrFeed.WriteEndElement();
}

xrFeed.WriteEndElement();
xrFeed.WriteEndDocument();

xrFeed.Flush();
xrFeed.Close();
Response.End();
DataBind();

作为输出我得到了

<?xml version="1.0" encoding="utf-8"?>
<ads>
  <ad>
     <id>&lt;![CDATA[12345]]&gt;</id>
  </ad>
</ads>

但我不需要编码&lt;标签

<?xml version="1.0" encoding="utf-8"?>
<ads>
  <ad>
     <id><![CDATA[12345]]></id>
  </ad>
</ads>

2 个答案:

答案 0 :(得分:2)

而不是:

xrFeed.WriteElementString("id", "<![CDATA[" + i.AdId+ "]]>");

执行:

xrFeed.WriteStartElement("id");
xrFeed.WriteCData(i.AdId);
xrFeed.WriteEndElement();

XmlTextWriter将对您发现的任何特殊字符进行编码。

答案 1 :(得分:0)

更改

< ![CDATA[" + i.AdId+ "]] > 

& lt;![CDATA[12345]]& gt; 

只需删除间距...&amp; lt或&amp; GT;