2011-04-22 62 views
1

我創建下面創建動態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文件作爲輸出我得到

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

,但我不需要編碼<標籤

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

回答

2

而不是:

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

務必:

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

XmlTextWriter將編碼任何特殊字符,因爲你已經發現。

0

變化

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

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

只是刪除的間距... & LT或& GT之間;

+0

那會輸出'& lt;![CDATA [12345]] & gt;' – 2011-07-29 18:33:19