python - 如何从 XML 中查找和提取某些字符串并在另一个 XML 文档中替换
问题描述
有人可以帮助我如何从 xml 中提取某些字符串并替换为另一个 xml。就像我只想从 1.XML 的第二行中提取 mediaId
- <sample_settings_config version="23" mediaId="0x6868">
并在 2.xml 文档中替换它(两个 XML 的代码都相同,除了 mediaId)。
由于 1.xml 位置是动态的(C:\users\xxxx\Documents),所以我正在寻找追加、查找提取和替换。:(
我正在尝试 Python 或批处理脚本。
在这个批处理脚本中苦苦挣扎
setlocal EnableDelayedExpansion
(Set UPD=C:\Users)
(Set UDS=\RAP\Documents\MB)
For /F "delims=" %%a in ('findstr /I /L "mediaId" 1.xml') do (
set "line=%%a"
set "line=!line:*<string>=!"
for /F "delims=<" %%b in ("!line!") do echo %%b
但它不起作用,感谢任何帮助,谢谢。
解决方案
from xml.etree.ElementTree import ElementTree
tree = ElementTree()
tree.parse("1.xml")
root = tree.getroot()
media_id = root.find('sample_settings_config').attrib['mediaId']
tree.parse("2.xml")
root = tree.getroot()
root.find('sample_settings_config').attrib['mediaId'] = media_id
tree.write('2.xml', xml_declaration=True)
您可以xml.etree.ElementTree
通过使用 Python 来读取和写入 XML。
代码导入ElementTree
并创建一个实例为tree
. 从tree
,解析 XML 文件并获取root
. 然后,找到标签
sample_settings_config
并获取 的属性值mediaId
。
重复解析,获取root
并找到标签。mediaId
用存储在变量中的值更新字典键media_id
。将修改后的内容写入 XML 文件。
1.xml:
<?xml version='1.0' encoding='us-ascii'?>
<root>
<sample_settings_config version="123" mediaId="0x6868">
"XML File 1"
</sample_settings_config>
</root>
2.xml:
<?xml version='1.0' encoding='us-ascii'?>
<root>
<sample_settings_config version="456" mediaId="0x0">
"XML File 2"
</sample_settings_config>
</root>
2.xml修改:
<?xml version='1.0' encoding='us-ascii'?>
<root>
<sample_settings_config mediaId="0x6868" version="456">
"XML File 2"
</sample_settings_config>
</root>
推荐阅读
- .net - 如何在 IHostBuilder 扩展中访问 IServiceProvider?
- python - 离线python包安装报错
- css - sr-only 类导致页面滚动
- ffmpeg - FFmpeg - 向视频添加动画 gif(通过蒙版裁剪)
- angular - Angular - 发送多个请求而不等待所有
- html - 在 Angular 中遇到动态表单问题并显示正确的信息
- overflow - 铸造原始值
- javascript - 检查数字的最后一位
- ruby - Rails 5x 模型购物车实例,必须链接到用户
- html - 无法在 cdk-virtual-scroll-viewport 中删除 mat-horizontal 步进导航