您可以使用任何一种方法.
以下是使用C#编码XML的4种方法:
这很丑,但它确实有效.请注意,Replace("&", "&")必须是第一个替换,所以我们不替换其他已经转义的&.
string xml = "<node>it's my \"node\" & i like it<node>";
encodedXml = xml.Replace("&","&").Replace("<","<").Replace(">",">").Replace("\"", """).Replace("'", "'");
// RESULT: <node>it's my "node" & i like it<node>
Run Code Online (Sandbox Code Playgroud)
用于编码HTML,但HTML是XML的一种形式,因此我们也可以使用它.主要用于ASP.NET应用程序.请注意,HtmlEncode不编码撇号(').
string xml = "<node>it's my \"node\" & i like it<node>";
string encodedXml = HttpUtility.HtmlEncode(xml);
// RESULT: <node>it's my "node" & i like it<node>
Run Code Online (Sandbox Code Playgroud)
在Windows窗体或控制台应用程序中,我使用此方法.如果没有别的东西它可以节省我,包括我的项目中的System.Web参考,它编码所有5个字符.
string xml = "<node>it's my \"node\" & i like it<node>";
string encodedXml = System.Security.SecurityElement.Escape(xml);
// RESULT: <node>it's my "node" & i like it<node>
Run Code Online (Sandbox Code Playgroud)
使用XmlTextWriter,您不必担心转义任何内容,因为它会在需要的地方转义字符.例如,在属性中它不会转义撇号,而在节点值中它不会转义撇号和qoutes.
string xml = "<node>it's my \"node\" & i like it<node>";
using (XmlTextWriter xtw = new XmlTextWriter(@"c:\xmlTest.xml", Encoding.Unicode))
{
xtw.WriteStartElement("xmlEncodeTest");
xtw.WriteAttributeString("testAttribute", xml);
xtw.WriteString(xml);
xtw.WriteEndElement();
}
// RESULT:
/*
<xmlEncodeTest testAttribute="<node>it's my "node" & i like it<node>">
<node>it's my "node" & i like it<node>
</xmlEncodeTest>
*/
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8489 次 |
| 最近记录: |