2013-07-10 152 views
0

假设我有以下XML获取部分节点XPATH

<a> 
    <b></b> 
    <c></c> 
    <d></d> 
    <e></e> 
</a> 

如果我想要得到的一个一个所有的孩子除了d。对于这一点,我会用以下内容:

/a/*[not(self::d)] 

然而,这将返回bÇ,并ē在三个不同的节点。我正在寻找的只是一个节点,包含b,ce,不包括d。这将是类似于以下伪代码:

/a/* and <do not include /a/d please> 

这可能吗?

谢谢。

+0

在XPath 1.0中不可能。对于版本2,我不知道。 – choroba

回答

2

XPath - 无论版本是1.0,2.0还是3.0 - 只能查询子树并且无法修改(包括删除)或构建新元素。

您将不得不为此目的使用XQuery或XSLT,或者修改查询语言以外的文档,并仅使用XPath选择结果子树,之后使用另一个XPath选择不想要的节点并将它们从这是您使用的编程语言的结果。