You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB.NET如何将XML子节点移至父节点层级?附示例

如何用XPath调整XML节点层级?

嘿,我来帮你搞定这个XML节点迁移的问题!你需要把<related>子节点里的<relatedToID>和<relatedToName>移到<record>父节点层级,结合XPath和Python的lxml库就能轻松实现,下面是具体的解决方案:

实现步骤

  1. 先确保你已经安装了lxml库(没装的话用pip install lxml快速安装)
  2. 解析XML字符串,用XPath精准定位目标节点
  3. 将指定节点迁移到父层级,最后清理空的<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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 13:37:39