在给定显式节点引用的情况下创建“子树”NodeList

时间:2011-08-09 03:23:12

标签: java xml xpath

我需要生成一个NodeList来表示我Node中给定Document的整个子树(包括属性,注释和命名空间声明)。

我们假设我的文档看起来像这样:

<?xml version="1.0"?>
<my:root xmlns:my="http://www.my.com/#">
  <my:element type="1">
    <my:content green="true">
      <xx:content xmlns:xx="http:://www.xx.com/#"/>
    </my:content>
  </my:element>
</my:root>

现在我想要的是选择包含该元素本身的所有子节点,以便我的结果选择代表子树

<my:element type="1">
  <my:content green="true">
    <xx:content xmlns:xx="http:://www.xx.com/#"/>
  </my:content>
</my:element>

a)如果能够实现这一目标,例如type属性可以假设是唯一的?我目前正在使用像

这样的XPath表达式
/descendant-or-self::node()[@type='1']/descendant-or-self::node()

有更好的方法吗?

b)在另一个场景中,我只是给出了明确的Node引用,而不知道它们在DOM中的上下文,这意味着我无法使用任何描述特征巧妙地选择“锚节点” 。有没有办法从Node引用派生一个XPath表达式来选择该特定节点的子树?或者是我在这种情况下通过迭代节点及其子节点手动生成NodeList的唯一机会?

1 个答案:

答案 0 :(得分:0)

也许Views tree + Views Datasource会有帮助吗?我建议尝试这些。