【问题标题】:ó not allowed in xml file but allowed in .net resource file?ó 在 xml 文件中不允许,但在 .net 资源文件中允许?
【发布时间】:2011-01-11 09:34:42
【问题描述】:

我正在解析一些 .net 资源文件 (.resx)。

其中,我有这样一段数据:

información

这适用于我的 .net 应用程序,但是当我尝试在我的 xml 文档中加载此文件时

XDocument xmlDoc = XDocument.Parse(s);

我得到这个错误:

Reference to undeclared entity 'oacute'. 

这是为什么呢?

【问题讨论】:

    标签: asp.net xml resources linq-to-xml


    【解决方案1】:

    ó 是一个未在 XML 中定义的 named HTML entity

    XML 仅定义命名的 HTML 实体的子集(即&'"><,如果没有记错的话)。

    您可以改用数字实体表示:

    información
    

    或者,十六进制:

    información
    

    【讨论】:

    • 嘿,谢谢,我一直认为 2 的意思是一样的,但这可能只是在 html 中,而不是在 XML 中。
    • @Frederic 那么对任何实体使用 XML 中的数字实体表示是否总是安全的?还是那里也有一个子集?
    • @Matt,它是安全的,大部分时间。有些字符不能在 XML 中使用,即使在它们的数字实体形式中也是如此。想到换页符 (),允许 字符的完整列表可以在 this answer 中找到。
    【解决方案2】:

    默认情况下,不为 XML 声明实体 oacute。请改用óHere 是 HTML 实体及其对应代码的列表,以防您遇到其他类似问题。

    如果您希望继续使用ó,您可以自己定义实体。

    如果你使用的是 DTD,你可以这样定义它

    <!ENTITY oacute "&#243;">
    

    或者如果使用 Schema,那么:

    <xsd:element name="oacute" type="xsd:token" fixed="&#243;"/>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-16
      • 2018-10-30
      相关资源
      最近更新 更多