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

如何在XML字符串中匹配<name>为property1的元素并替换后续<value>内容

刚好做过类似的需求,给你两种实用的解决方式:

方法1:使用XML解析库(强烈推荐)

XML是结构化数据,用专门的解析库能完美处理各种格式变化(比如空格、换行、嵌套),比正则靠谱太多。以Python的xml.etree.ElementTree为例:

import xml.etree.ElementTree as ET

# 你的原始XML字符串
xml_str = '''<property> <name>property1</name> <value>7200</value> </property>'''

# 解析XML为元素对象
root = ET.fromstring(xml_str)

# 遍历查找目标节点并修改
for property_node in root.findall('.//property'):
    name_node = property_node.find('name')
    # 找到文本为property1的name元素
    if name_node and name_node.text == 'property1':
        # 定位对应的value元素并修改文本
        value_node = property_node.find('value')
        if value_node:
            value_node.text = '1000'
            break  # 如果要修改所有匹配的节点,去掉这个break即可

# 转换回XML字符串
modified_xml = ET.tostring(root, encoding='unicode')
print(modified_xml)

运行后就能得到你想要的结果:

<property> <name>property1</name> <value>1000</value> </property>
方法2:正则表达式(仅限简单固定场景)

如果你确定XML结构绝对固定,不会有嵌套、额外换行或特殊字符,可以用正则快速处理,但不推荐用于复杂XML,容易出现匹配错误:

import re

xml_str = '''<property> <name>property1</name> <value>7200</value> </property>'''
# 匹配name为property1的片段,替换value里的内容
modified_xml = re.sub(r'(<name>property1</name>\s*<value>)\d+(</value>)', r'\11000\2', xml_str)
print(modified_xml)

这个正则的逻辑是捕获name>property1</name>到<value>之间的空白,以及<value>的闭合标签,把中间的数字替换成1000。


内容的提问来源于stack exchange,提问作者Kalin Borisov

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:52:14