如何生成超级XML节点
我有以下XML片段:如何生成超级XML节点,xml,xpath,xquery,xbase,Xml,Xpath,Xquery,Xbase,我有以下XML片段: <topic> <data attribute1="1">some data 1<data> <data attribute1="1">some data x<data> <data2 type="sometype">some data 2</data2> </topic> <topic> <data attribute1="1">some
<topic>
<data attribute1="1">some data 1<data>
<data attribute1="1">some data x<data>
<data2 type="sometype">some data 2</data2>
</topic>
<topic>
<data attribute1="1">some data 1<data>
<data attribute2="2">some data 2<data>
</topic>
实现这一目标的最佳方法是什么?我可以使用XQuery吗?我一直在玩,但运气不太好。修改输入XML,使其成为一个有效的XML文件,并带有根元素和结束标记,如下所示
<root>
<topic>
<data attribute1="1">some data 1</data>
<data attribute1="1">some data x</data>
<data2 type="sometype">some data 2</data2>
</topic>
<topic>
<data attribute1="1">some data 1</data>
<data attribute2="2">some data 2</data>
</topic>
</root>
一些数据1
一些数据x
一些数据2
一些数据1
一些数据2
您可以使用此XQuery将
元素的所有子节点合并到一个
元素中:
let $file := doc("a.xml")/root
return
<topic>{for $item in $file/topic/* return $item}</topic>
let$file:=doc(“a.xml”)/root
返回
{对于$file/topic/*中的$item,返回$item}
它的产量是
<topic>
<data attribute1="1">some data 1</data>
<data attribute1="1">some data x</data>
<data2 type="sometype">some data 2</data2>
<data attribute1="1">some data 1</data>
<data attribute2="2">some data 2</data>
</topic>
一些数据1
一些数据x
一些数据2
一些数据1
一些数据2
这与您的预期输出不同。但是,因为您没有为输出指定任何规则,所以这就足够了。您标记为“答案”的答案不会进行任何分组@YitzhakKhabinsky:是的,它没有,因为没有指定分组标准(如我回答的最后一句所述)。@zx485我确实提到了
,这样最终输出是一个单独的主题,元素按属性、元素名称和值分组
,你认为这不是分组标准吗?如果你能解释一下如何对节点进行分组,我将不胜感激。请回答一个新问题
<topic>
<data attribute1="1">some data 1</data>
<data attribute1="1">some data x</data>
<data2 type="sometype">some data 2</data2>
<data attribute1="1">some data 1</data>
<data attribute2="2">some data 2</data>
</topic>