2013-10-04 16 views
3

我有一个XML文件,sample.xml中,包含以下内容:使用HTML代码执行XML的简单方法?

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

我想分析它 - 但得到的错误,当它到达NBSP

我没有访问我正在使用的XML(定义令牌或令牌的XML)的架构。

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

因为我没有为我的XML文档的架构,我想知道是否有办法把它完全忽略,而解析HTML特殊字符?

回答

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?

0

你所要求的是不可能的,因为解析XML请求实体必须有一个定义。要将其解析为XML以外的其他文件,您需要编写自己的解析器,或者使用宽容的解析器。 XML不是标签汤。

0

虽然XHTML不支持XML,但不支持&nbsp。检查predefined entities in XML list

解决方案是在构建XML时使用Unicode非断点空格字符&#160;代替。在某些情况下,一个简单的空间也可以工作(&#32;)。在解析XML之前,你可以试着用''空格代替&nbsp

0

我同意Reedwald。但作为解决方法,您可以将文件读取为字符串,并在解析文档之前用空格替换 。