【问题标题】:XPath condition for printing xml block用于打印 xml 块的 XPath 条件
【发布时间】:2008-10-15 06:59:41
【问题描述】:

我正在使用 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()";

【问题讨论】:

    标签: xml xpath


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      rslite 方法的演示,使用命令行工具xpath(用 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>
      

      【讨论】:

      • 有没有办法在java中做到这一点而不打印内部文本?
      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-09-23
        • 1970-01-01
        • 1970-01-01
        • 2022-07-14
        • 2015-11-29
        • 2021-01-16
        • 2012-10-04
        • 2015-01-05
        相关资源
        最近更新 更多