XElement.读取&符号和特殊国家字符时出错

本文关键字:国家 字符 出错 读取 符号 XElement | 更新日期: 2023-09-27 18:06:01

我从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'

你知道怎么解决这个问题吗?

XElement.读取&符号和特殊国家字符时出错

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

要表示&符号,您正在加载的数据应该使用"&"实体。

, ccedil;(& ccdil;)和&命名实体不是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;
}