我以前使用过 Apache digester,并且喜欢基于分支的 xml 标签搜索。将标签指定为 h\a\b\ 非常直观。
现在我想做 xml 过滤项目,但 apache digester 似乎不起作用,仅仅是因为没有办法获取底层的 xml 标签。正如常见问题解答所说:
如何获得一些嵌套在标签中的 xml 作为文字字符串?
经常有人问如何将嵌套在文档中的一些 XML(尤其是 XHTML)提取为字符串,例如将下面的“body”标签的内容提取为字符串:
...一些 xml 代码...
如果您可以修改上述内容以将所需文本包装为 CDATA 部分,那么事情就很容易了;Digester 只会将该 CDATA 块视为单个字符串:
...一些 xml 代码...
如果这不能完成,那么您需要使用 NodeCreateRule 创建一个表示 body 标记及其子标记的 DOM 节点,然后将该 DOM 节点序列化回文本。
请记住,Digester 只是标准 XML 解析器之上的一个层,标准 XML 解析器无法仅停止解析特定元素的输入 - 除非它知道该元素的内容是一个字符块 (CDATA)。
如果有什么东西使用我可以用来过滤 xml 的相同模式系统?我的想法是使用用户提供的模式并将它们列入黑名单,并复制其他所有内容。
或者也许有一种方法可以在 Apache Digester 中找到匹配的位置(xml 上的位置,而不仅仅是显示的文本)。这足以让我通过保留它的副本并跳过匹配来复制其他文本。
编辑:我发现 XPath 看起来几乎可以这样做,但我发现的所有应用程序都是用于选择某些东西,而不是删除它。你有这方面的例子吗?