现在我正在使用Java中的SAX解析器来解析位于.docx文件存档中的“document.xml”文件。以下是我要解析的内容的示例...
示例XML文档
<w:pStyle w:val="Heading2" />
</w:pPr>
<w:bookmarkStart w:id="0" w:name="_Toc258435889" />
<w:bookmarkStart w:id="1" w:name="_Toc259085121" />
<w:bookmarkStart w:id="2" w:name="_Toc259261685" />
- <w:r w:rsidRPr="00415FD6">
<w:t>Text To Extract</w:t>
</w:r>
<w:bookmarkEnd w:id="0" />
<w:bookmarkEnd w:id="1" />
<w:bookmarkEnd w:id="2" />
现在,我知道如何取出属性值,这并不难。但是,我不知道如何进入并解析节点中的实际文本。有没有人对此有任何想法或经验?提前谢谢。
答案 0 :(得分:3)
阅读this article on SAX parsing(虽然旧但仍然有效),请特别注意characters
方法的实施方式。这是非常不直观的,并且每个人都会绊倒,你会因为看似没有充分理由而多次拨打characters
。
同样the Java tutorial on SAX对字符方法有一个简短的解释:
解析器不需要一次返回任何特定数量的字符。解析器可以一次从单个字符返回任何内容,但仍然是符合标准的实现。因此,如果您的应用程序需要处理它看到的字符,那么使用characters()方法在java.lang.StringBuffer中累积字符并且只有在您确定已找到所有字符时才对它们进行操作是明智的。 / p>
在你的情况下(没有混合内容的XML)意味着存储多个characters()调用的结果,直到下次调用endElement。
答案 1 :(得分:2)
请参阅characters()ContentHandler方法。仔细阅读javadoc - 当你只想到一个时,你可以接到多个电话。