【问题标题】:How to ignore whitespaces and new line feeds while parsing a XML file解析 XML 文件时如何忽略空格和换行符
【发布时间】:2013-04-07 06:52:25
【问题描述】:

如何在解析 XML 文件时忽略空格。它总是再次调用characters(...)方法,而在结束元素之后是'\n''\r',所以它调用了这个方法两次,而不是只调用一次。

【问题讨论】:

  • 大多数XML 解析器自己处理这个问题。顺便说一句,您使用的是哪个解析器?
  • 我使用这个解析器:javax.xml.parsers.SAXParser。我知道有一个名为 ignorableWhitespaces(...) 的函数,但我不知道如何使用这个函数,也不知道它到底是做什么的。

标签: java xml xml-parsing whitespace removing-whitespace


【解决方案1】:

根据 DTD 解析文档的 SAXParser 在遇到 元素内容 中的空白时会调用 ignorableWhitespace()。例如,如果这个 XML 片段

<ol>
   <li>one</li>
   <li>two</li>
</ol>

针对此 DTD 片段进行解析:

<!ELEMENT ol (li+)>
<!ELEMENT li (#PCDATA)>

SAXParser 会调用characters(...) 来处理"one""two",并调用ignorableWhitespace(...) 来处理元素之间的所有空白。

还请注意,这仅适用于针对 DTD 进行解析。使用 Schema 时,不会调用 ignorableWhitespace(...)(即使有相同类型的信息可用)。

【讨论】:

  • 好的,谢谢,但这并没有解决我的问题。在给定 XML 文件中的元素之间是空格,例如.. .... (用点标记)并且在这种情况下总是调用 characters() 。用一个简单的 return 解决它: if (content.length() == 0) return; // 忽略空格
猜你喜欢
  • 1970-01-01
  • 2011-07-06
  • 1970-01-01
  • 2022-11-24
  • 1970-01-01
  • 2019-06-09
  • 2011-01-09
  • 2023-03-22
  • 1970-01-01
相关资源
最近更新 更多