以下是我的XML文件的结构 -
<Doc>
<P n="1"/>
<P>blah blah blah. <B>Pg-1</B></P>
<P n="2"/>
<P>blah blah blah. <B>Pg-2</B></P>
</Doc>
我必须将其更改为 -
<Doc>
<P n="1">blah blah blah. <B>Pg-1</B></P>
<P n="2">blah blah blah. <B>Pg-2</B></P>
</Doc>
怎么做?
答案 0 :(得分:1)
这有点棘手,这就是我想出来的。我不确定是否有更好的方式。
for $pn in Doc/P[@n]
let $nextPn := $pn/following-sibling::P[@n]
let $pGroup := ($pn union $pn/following-sibling::P) except ($nextPn union $nextPn/following-sibling::P)
return <P>{$pn/attribute(), $pGroup/node()}</P>
答案 1 :(得分:1)
如果您的查询处理器支持XQuery Update,这是另一种解决方案:
copy $doc :=
<Doc>
<P n="1"/>
<P>blah blah blah. <B>Pg-1</B></P>
<P n="2"/>
<P>blah blah blah. <B>Pg-2</B></P>
</Doc>
modify (
for $p1 in $doc/P[@n]
let $p2 := $p1/following-sibling::P[1]
return (
insert node $p2/node() into $p1,
delete node $p2
)
)
return $doc