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><![CDATA[12345]]></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;
精彩评论