【问题标题】:Simple way to do XML with HTML codes?用 HTML 代码做 XML 的简单方法?
【发布时间】:2013-10-11 19:54:25
【问题描述】:

我有一个 XML 文件 sample.xml,其中包含以下内容:

<Tokens>
   <Token>Hello&nbsp;World</Token>
</Tokens>

我想解析它 - 但当它到达 NBSP 时会出错

我无权访问我正在使用的 XML 的架构(定义一个或多个令牌的那个)。

DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
doc = docBuilder.parse("sample.xml");

由于我的 XML 文档没有 Schema,我想知道是否有办法让它在解析时完全忽略 HTML 特殊字符?

【问题讨论】:

    标签: java html xml


    【解决方案1】:

    您所要求的内容是不可能的,因为要解析请求 XML,实体必须在某处具有定义。要将其解析为 XML 以外的内容,您需要编写自己的解析器,或者使用容错的解析器。 XML 不是标签汤。

    【讨论】:

      【解决方案2】:

      XML 不支持&amp;nbsp,尽管 XHTML 支持。检查predefined entities in XML list

      解决方案是在构建 XML 时使用 Unicode 不间断空格字符&amp;#160;反而。在某些情况下,普通空间也可以使用 (&amp;#32;)。在解析 XML 之前,您可以尝试将 &amp;nbsp 替换为 ' ' -space。

      【讨论】:

        【解决方案3】:

        我同意里德瓦尔德的观点。但作为一种解决方法,您可以将文件作为字符串读取,并在解析文档之前将 ' 替换为空格。

        【讨论】:

          【解决方案4】:

          在 XML 中,&amp;nbsp; 是实体引用,但未定义,除非您提供定义。您不能让 XML 解析器忽略它们,但您可以定义它们,例如开始你的文档

          <!DOCTYPE Tokens [<!ENTITY nbsp "&#xa0;">]>
          

          但是,如果您正在生成 XML 文件,这可能没有用。您也可以生成包含真实字符“ ” U+00A0 NO-BREAK SPACE 或字符引用&amp;#xa0; 或其十进制等效值&amp;#160; 的文档。

          参照。提问How do I define HTML entity references inside a valid XML document?

          【讨论】:

            猜你喜欢
            • 2010-10-06
            • 2015-07-03
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多