开发者

Creating dynamic xml feed automatically encode some tags

I'm creating dynamically xml file using code below

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


foreach (var i in items)
{
    xrFeed.W开发者_如何学JAVAriteStartElement("ad");
    xrFeed.WriteElementString("id", "<![CDATA[" + i.AdId+ "]]>");                
    xrFeed.WriteEndElement();
}

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

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

as output I get

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

but I need not to encode < tag

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


Instead of:

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

Do:

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

The XmlTextWriter will encode any special characters, as you have discovered.


change

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

to

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

just delete the spacing... between & lt or & gt;

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜