如何找到/使用op:除了多个xml文件?
我从文件1和文件2中获取了节点,并在xquery表达式中找到了op:除了这两个节点。当我使用op时:除了,我最终得到一个空集。
XML文件1:
<a>txt</a>
<a>txt2</a>
<a>txt3</a>
XML文件2:
<a>txt2</a>
<a>txt4</a>
<a>txt3</a>
我希望op:($ nodesfromfile1,$ nodesfromfile2)的输出为:
<a>txt</a>
答案 0 :(得分:2)
它有效地归结为以下代码中返回后面的单行。你可以把它放在一个函数中,如果你喜欢,但它已经非常密集,所以可能不值得..
let $file1 := (
<a>txt</a>,
<a>txt2</a>,
<a>txt3</a>
)
let $file2 := (
<a>txt2</a>,
<a>txt4</a>,
<a>txt3</a>
)
return
$file1[not(. = $file2)]
注意,您还有'except'关键字($file1 except $file2
),但它适用于节点身份,如果节点来自不同的文件,这将无效。
顺便说一下,上面的代码使用字符串相等来进行比较。如果您希望对完整节点结构进行比较,还可以使用deep-equal()
函数。
HTH!