【问题标题】:Deserialize XML with ampersand using XmlSerializer()使用 XmlSerializer() 反序列化带有 & 符号的 XML
【发布时间】:2009-11-16 18:42:32
【问题描述】:

当 XML 包含像“Lord & Hogan”这样的数据时,以下代码会中断。有什么建议? 谢谢,肯

    private T GetResponse<T>(String apiObject, String query)
    {
        //Deserialize XML into the type specified.
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(BuildRequestUri(apiObject, query));
        using (HttpWebResponse resp = (HttpWebResponse)request.GetResponse())
        {
            try
            {
                XmlSerializer ser = new XmlSerializer(typeof(T));
                return (T)ser.Deserialize(resp.GetResponseStream());
            }
            catch (Exception e)
            {
                error = e.InnerException.ToString();
                return default(T);
            }
        }
    }

【问题讨论】:

  • System.Xml.XmlException:解析 EntityName 时出错。第 12 行,第 30 位。我应该提到我对源 XML 的控制有限(用户可以在不验证的情况下添加与号)。在尝试反序列化之前,我应该尝试使用响应吗?谢谢,肯。

标签: c# .net xml-serialization


【解决方案1】:

来自here:

XML 标记内的文字 & 符号 XML 标准不允许, 这样的文件将无法解析 通过任何 XML 解析器。

StackOverflow 上的其他类似问题:

【讨论】:

    【解决方案2】:

    您应该对数据进行 XML 编码,例如“Lord & Hogan”。它应该像这样编码:

    "Lord &amp;amp; Hogan"

    【讨论】:

      【解决方案3】:

      xml 中的&amp;amp; 应替换为&amp;amp;,否则为无效字符。

      【讨论】:

        【解决方案4】:

        【讨论】:

        • 这也将 转换为 &lt 和 &gt 并且炸弹反序列化:(
        猜你喜欢
        • 1970-01-01
        • 2023-04-05
        • 2011-12-09
        • 1970-01-01
        • 2020-12-09
        • 2015-09-12
        • 1970-01-01
        • 2013-04-26
        • 1970-01-01
        相关资源
        最近更新 更多