投影和保留结构

Projection and preserve structure

以下文档

<root>
 <child no=1>
  <grandchild no=1></grandchild>
  <grandchild no=2></grandchild>
  <grandchild no=3></grandchild>
 </child>
 <child no=2>
  <grandchild no=1></grandchild>
  <grandchild no=2></grandchild>
  <grandchild no=3></grandchild>
  <grandchild no=4></grandchild>
 </child>
</root>

我如何 select 所有 children 以及它们各自的前两个 grandchildren? IE。我想 return

<child no=1>
 <grandchild no=1></grandchild>
 <grandchild no=2></grandchild>
</child>
<child no=2>
 <grandchild no=1></grandchild>
 <grandchild no=2></grandchild>
</child>

我的尝试//child/grandchild[@no=1 or @no=2]只给了我

 <grandchild no=1></grandchild>,
 <grandchild no=2></grandchild>,
 <grandchild no=1></grandchild>,
 <grandchild no=2></grandchild>

即grandchildren 不再包含在它们各自的 children.

非常感谢您的建议和指点! bb

Xpath用于selectxml中的标签,不能修改。你想修改子标签,xpath 做不到。

但是您可以使用lxmlxml库来解析xml并修改它。