2011-08-09 42 views
1

我需要生成一个NodeList,它表示Document中给定的Node的整个子树(包括属性,注释和名称空间声明)。给定显式节点引用创建一个“子树”节点列表

假设我的文件是这样的:

<?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是唯一的机会?

回答

相关问题