【问题标题】:sax : trouble with parsing mixed content textsax:解析混合内容文本时遇到问题
【发布时间】:2011-07-05 15:08:48
【问题描述】:

我在处理 xml 文件的一部分时遇到了问题。我正在用 sax 和 java 解析它。
我无法获取文本的所有部分(文本的开头、文本的中间、文本的结尾)。

<sometag type="aType">  
     beginning of the text          
     <anothertag type="anotherType" target="aTarget">middle of the text</anothertag>
     end of the text
</sometag>

【问题讨论】:

标签: java xml sax


【解决方案1】:

每个人都搞砸了实现 ContentHandler characters 方法,因为它完全不直观。诀窍是单个元素文本节点可以多次调用 characters 方法,您必须将传入的片段累积在缓冲区中。 See the Java tutorial on SAX. 对于混合内容,您必须在 startElement 和 endElement 处从缓冲区中获取文本。

如果这不能回答您的问题,请向我们展示一些代码。

【讨论】:

  • 另外,千万不要以为只有在嵌入标签时才会接到多个电话 - 您还会偶尔看似无缘无故地接到多个电话- 我猜它们发生在输入缓冲区边界上。
【解决方案2】:

在您知道从经验中可以期待什么之前,SAX 通常会令人惊讶。

您可能希望暂时在事件处理程序中放置一些控制台日志记录,或者甚至只是将它们全部断点,然后设置一个小测试来看看您得到了什么。我更喜欢登录这样的案例,因为它为我提供了我可以期待的“大图”。

FWIW,Stax 在性能上更容易一些且相似。

【讨论】:

  • 或者,编写一个带有控制台日志事件处理程序的独立实用程序。你可能会再次使用它。
猜你喜欢
  • 2013-01-18
  • 2016-10-15
  • 1970-01-01
  • 2011-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-21
  • 1970-01-01
相关资源
最近更新 更多