Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何生成超级XML节点_Xml_Xpath_Xquery_Xbase - Fatal编程技术网

如何生成超级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

我有以下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 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>