我有一些以下格式的可怕 xml(匿名以保护有罪者):
<root>
<outer attribute="myValue">
<middle>
<inner>
arbitrary text<break />more arbitrary text<break />
</inner>
</middle>
</outer>
...
<outer attribute="myValue">
<middle>
<inner>
arbitrary text<break />more arbitrary text
</inner>
</middle>
</outer>
</root>
自闭合节点代表段落中断,而移动到完全独立的外部/中间/内部树根本没有意义(并且不能导致段落中断)。
直接的 XPath 表达式/*/outer/middle/inner/text()
让我获得了所有的文本元素,但我不再知道何时不为新的文本节点开始一个新的段落。(由于命名空间滥用和其他杂乱无章,实际的表达远没有那么简单,但这就是它的要点)。
绕过这个缺点并正确忽略文本之间的非段落分隔符的最佳方法是什么?有没有办法我也可以捕获中断节点并在保留顺序的列表中的文本节点中识别它们?
对于其他上下文,我正在使用 %XML.XPATH.Document API(它包装了标准 SAX,但在该方法的复杂程度方面仍可能受到限制)在 Intersystems Cache 中工作。
一些参考资料: