3

我正在使用 Java API 和 XPath 来解析我的 XML。我有这样的 XML:

<animals>
  <dog>
    <looks>dangerous </looks> 
     <bites> hard </bites>
     <growls> yes </growls>
  </dog>
  <cat>nothing special</cat>
</animals>

我想打印一个 XPath 条件

<dog>
  <looks>dangerous </looks> 
  <bites> hard </bites>
  <growls> yes </growls>
</dog>

但我现在不能。如果我使用/animal/dog/text()它会给dangerous. 但我想它是单独使用打印文本的。有没有办法使用 XPath 条件来获取 XML 块?

编辑

非常感谢您的回复。感谢您花在这方面的时间。有没有办法在不打印内部文本的情况下在 Java 中做到这一点?

这是我的 XPath 条件所在:

public static final String XPATH_INPUT_DATA="//text()";
4

3 回答 3

2

如果您使用 /animals/dog,您将获得带有所有子节点的“dog”节点。打印该节点的内部 xml 应该可以满足您的需求。

于 2008-10-15T07:21:41.380 回答
1

使用命令行工具xpath演示 rslite 的方法(用 Perl 编写,但它是标准 Xpath,它应该适用于任何地方):

% xpath -e /animals/dog animals.xml 
Found 1 nodes in animals.xml:
-- NODE --
<dog>
   <looks>dangerous </looks> 
   <bites> hard </bites>
   <growls> yes </growls>
</dog>
于 2008-10-15T12:30:46.610 回答
1

XPath 所做的只是选择一个节点。//text() 测试只选择文档中的所有文本节点。文档中的元素仅作为元素节点存在,而不是您似乎暗示的文本块。如果要将这些元素转换为文本,则需要在 Java 级别进行此转换(通过打印内部文本)。

于 2008-10-21T13:12:20.017 回答