【问题标题】:XElement.Load Error reading ampersand symbols and special country charactersXElement.Load 读取与符号和特殊国家/地区字符时出错
【发布时间】:2014-05-30 14:55:13
【问题描述】:

我在从 XML 文件中读取 & 符号时遇到问题:

XElement xmlElements = XElement.Load(Path_Xml_Data_File);

当我遇到错误时:

<Name>Patrick & Phill</Name>

Error: Name cannot begin with the ' ' character, hexadecimal value 0x20. Xml.XmlException) A System.Xml.XmlException was thrown: "Name cannot begin with the ' ' character

或使用特殊的葡萄牙语字符:

<Extra>Direc&ccedil;&atilde;o Assistida</Extra> (= <Extra>Direcção Assistida</Extra>)

Error: Reference to undeclared entity 'ccedil'

知道如何解决这个问题吗?

【问题讨论】:

    标签: c# xml xml-parsing


    【解决方案1】:

    恐怕您正在处理格式错误的 XML。

    为了表示 & 符号,您正在加载的数据应使用“&”实体。

    ç (ç) 和 ã (ã) 命名实体不是 XML 标准的一部分,它们更常见于 HTML 中(尽管它们可以通过使用 DTD 添加到 XML 中)。

    您可以先使用 HtmlTidy 整理数据,或者您可以编写一些东西来将裸 & 符号转换为传入文件上的实体。

    例如:

    public string CleanUpData(string data)
    {
        var r = new Regex(@"&\s");
        string output = r.Replace(data, "&amp; ");
        output = output.Replace("&ccedil;", "ç");
        output = output.Replace("&atilde;", "ã");
        return output;
    }
    

    【讨论】:

    • 您好,谢谢,但是在我 XElement.Load xml 之前我该怎么做呢?
    • XElement.Parse(CleanUpData(File.ReadAllText(Path_Xml_Data_File)));
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-18
    • 2017-01-10
    • 2018-11-13
    • 2014-06-12
    • 2011-12-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多