我正在與第三方合作,他們堅持認爲他們需要xml特殊字符作爲代碼,即:&
&#174而不是(R)符號。每次我保存一個XmlDocument,雖然我得到的符號。我似乎無法讓它輸出代碼。我需要XmlDocument將特殊字符保存爲代碼而不是符號
我需要
<tag>Words...&®</tag>
,而不是
<tag>Words...®</tag>
我正在與第三方合作,他們堅持認爲他們需要xml特殊字符作爲代碼,即:&
&#174而不是(R)符號。每次我保存一個XmlDocument,雖然我得到的符號。我似乎無法讓它輸出代碼。我需要XmlDocument將特殊字符保存爲代碼而不是符號
我需要
<tag>Words...&®</tag>
,而不是
<tag>Words...®</tag>
嘗試將其添加爲CDATA:
XmlDocument doc = new XmlDocument();
var root = doc.AppendChild(doc.CreateElement("Root"));
root.AppendChild(doc.CreateCDataSection("&®"));
這份文件將有以下文本形式,和CDATA節防止XML處理器試圖解釋特殊字符:
<?xml version="1.0" encoding="utf-16"?><Root><![CDATA[&®]]></Root>
我不認爲他們會喜歡標籤。我只需要代碼 – ForeverNoobie
我想你可以通過創建自定義的XmlWriter做到這一點,例如
public class CustomXmlWriter : XmlTextWriter
{
public CustomXmlWriter(TextWriter wr)
: base(wr)
{
}
public override void WriteString(string text)
{
text = HttpUtility.HtmlEncode(text);
text = String.Join("",text.Select(Encode));
base.WriteRaw(text);
}
string Encode(char c)
{
if (c < 127) return c.ToString();
return "&#" + ((int)c).ToString() + ";";
}
}
我上面的功能測試與
XElement xElem = new XElement("tag", "Words...®");
StringWriter wr = new StringWriter();
xElem.Save(new CustomXmlWriter(wr));
var xml = wr.ToString();
,它似乎工作。
你可以使用字符串'@'嗎? –
請顯示一個小例子,並顯示您希望如何顯示。另外,告訴我們你是如何知道你「得到了符號」的。你檢查過磁盤嗎? –
您的示例不匹配,您的意思是' Words ...&® '是否爲源字符串? –