使用HTML代码执行XML的简单方法?

时间:2013-10-04 17:48:37

标签: java html xml

我有一个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特殊字符?

4 个答案:

答案 0 :(得分:3)

在XML中,&nbsp;是实体引用,但是未定义引用,除非您提供定义。您无法使XML解析器忽略它们,但您可以定义它们,例如用

开始你的文件
<!DOCTYPE Tokens [<!ENTITY nbsp "&#xa0;">]>

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

比照。质疑How do I define HTML entity references inside a valid XML document?

答案 1 :(得分:0)

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

答案 2 :(得分:0)

XML不支持&nbsp,尽管XHTML支持&#160。查看predefined entities in XML list

解决方案是在构建XML时使用Unicode非中断空格字符&#32;代替。在某些情况下,普通空间也可以工作(&nbsp;)。在解析XML之前,您可以尝试使用''-space替换{{1}}。

答案 3 :(得分:0)

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