代码之家  ›  专栏  ›  技术社区  ›  Alexandre Rondeau

XML Unicode安全编码

  •  4
  • Alexandre Rondeau  · 技术社区  · 14 年前

    我正在寻找使用#&233;编码对XML文档进行编码的方法。

    使用此基本代码

    var xmlDoc = new XmlDocument();
    xmlDoc.Load(@"D:\Temp\XmlDocBase.xml");
    xmlDoc.Save(@"D:\Temp\XmlDocBaseCopy.xml");
    

    我的Xml文档来自:

    <?xml version="1.0"?>
    <Tag1>
      <comment>entit&#233;</comment>
    </Tag1>
    

    <?xml version="1.0"?>
    <Tag1>
      <comment>entité</comment>
    </Tag1>
    

    当做

    2 回复  |  直到 14 年前
        1
  •  5
  •   Alexei Levenkov    14 年前

    您可以强制编码不支持所有unicode字符(即ASCII)。因此,writer将被迫使用实体。

        XmlDocument doc = new XmlDocument();
        doc.LoadXml("<Tag1><comment>entit&#233;</comment></Tag1>");
    
        var writer = XmlTextWriter.Create(
            @"c:\temp\o.xml",
            new XmlWriterSettings { Encoding = System.Text.ASCIIEncoding.ASCII });
        doc.Save(writer);
    

    结果:

    <?xml version="1.0" encoding="us-ascii"?><Tag1><comment>entit&#xE9;</comment></Tag1>
    
        2
  •  2
  •   Gilles    8 年前

    可以对字符串调用HttpUtility.HtmlEncode。

    return HttpUtility.HtmlEncode("entité");
    

    退换商品 entit&#233;

    HttpUtility是System.Web的一部分。