我有一个XML文件sample.xml,其中包含以下内容:
<Tokens>
<Token>Hello World</Token>
</Tokens>
我想解析它 - 但是当它到达NBSP时会出错。
我无法访问我正在使用的XML架构(定义令牌或令牌的架构)。
DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
doc = docBuilder.parse("sample.xml");
由于我的XML文档没有Schema,我想知道在解析时是否有办法让它完全忽略HTML特殊字符?
答案 0 :(得分:3)
在XML中,
是实体引用,但是未定义引用,除非您提供定义。您无法使XML解析器忽略它们,但您可以定义它们,例如用
<!DOCTYPE Tokens [<!ENTITY nbsp " ">]>
但是,如果要生成XML文件,这可能没用。您也可以生成一个包含真实字符“”U + 00A0 NO-BREAK SPACE,或字符引用 
或其十进制等效 
的文档。
比照。质疑How do I define HTML entity references inside a valid XML document?
答案 1 :(得分:0)
你要求的是不可能的,因为解析问XML实体必须在某处有定义。要将其解析为XML以外的其他语法,您需要编写自己的解析器,或使用容错解析器。 XML不是标签汤。
答案 2 :(得分:0)
XML不支持 
,尽管XHTML支持 
。查看predefined entities in XML list
解决方案是在构建XML时使用Unicode非中断空格字符 
;代替。在某些情况下,普通空间也可以工作( 
;)。在解析XML之前,您可以尝试使用''-space替换{{1}}。
答案 3 :(得分:0)
我同意里德瓦尔德的看法。但作为一种解决方法,您可以将文件读取为字符串,并在解析文档之前替换with空格。