VB.NET如何将XML子节点移至父节点层级?附示例
如何用XPath调整XML节点层级?
嘿,我来帮你搞定这个XML节点迁移的问题!你需要把<related>子节点里的<relatedToID>和<relatedToName>移到<record>父节点层级,结合XPath和Python的lxml库就能轻松实现,下面是具体的解决方案:
实现步骤
- 先确保你已经安装了
lxml库(没装的话用pip install lxml快速安装) - 解析XML字符串,用XPath精准定位目标节点
- 将指定节点迁移到父层级,最后清理空的
<related>节点
完整代码示例
from lxml import etree # 假设你的XML字符串已经存储在result变量中 xml_tree = etree.fromstring(result) # 遍历所有<record>节点 for record in xml_tree.xpath('//record'): # 定位当前record下的<related>子节点 related_node = record.xpath('./related')[0] # 提取需要移动的两个目标节点 related_to_id = related_node.xpath('./relatedToID')[0] related_to_name = related_node.xpath('./relatedToName')[0] # 将节点追加到<record>节点下(节点会自动从原位置移除) record.append(related_to_id) record.append(related_to_name) # 删除已经空了的<related>节点 record.remove(related_node) # 输出调整后的XML字符串(带格式更易读) adjusted_xml = etree.tostring(xml_tree, encoding='unicode', pretty_print=True) print(adjusted_xml)
代码说明
//record:用XPath匹配所有层级下的<record>节点,支持处理多个record的场景./related:定位当前<record>节点的直接子节点<related>,避免匹配到其他层级的同名节点record.append():lxml中节点是引用类型,添加到新位置后会自动从原父节点中移除,不用额外处理原节点的删除- 最后删除空的
<related>节点,就能得到你想要的干净XML结构
运行这段代码后,就能生成你期望的目标XML啦!
内容的提问来源于stack exchange,提问作者Chris Rutherfurd
相关产品推荐
相关产品推荐

