python - 使用 python 编辑 XML

标签 python xml-parsing

我正在尝试解析一个 xml 文件,我想在其中获取 objlocation 的字符串并更改字符串的内容。

这是我拥有的 xml 文件的内容:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<publish show="STATE">

    <pubgroup objtype="ELE" location="/user_data/STATE/ITEM/character/ANM/ANM_rig_WALK_sg_v001/ANM_rig_WALK_sg_v001.xml">

        <member objidx="15283942" objlabel="anm" objlocation="/user_data/STATE/ITEM/character/ANM/ANM_rig_WALK_sg_v001/ANM_rig_WALK_sg_v001.anm"/>

        <member objidx="15283952" objlabel="fbx" objlocation="/user_data/STATE/ITEM/character/ANM/ANM_rig_WALK_sg_v001/ANM_rig_WALK_sg_v001_M_WALK_None.fbx"/>

        <member objidx="15283962" objlabel="mov" objlocation="/user_data/STATE/ITEM/character/ANM/ANM_rig_WALK_sg_v001/ANM_rig_WALK_sg_v001.mov"/>

        <member objidx="15283972" objlabel="libraryinfo" objlocation="/user_data/STATE/ITEM/character/ANM/ANM_rig_WALK_sg_v001/ANM_rig_WALK_sg_v001.json"/>

        <member objidx="15283982" objlabel="thumbnail" objlocation="/user_data/STATE/ITEM/character/ANM/ANM_rig_WALK_sg_v001/ANM_rig_WALK_sg_v001.mng"/>

    </pubgroup>
</publish>

我尝试了 .firstChild.childNodes[],它正在将输出内容打印为我的 xml 文件。这是我尝试解析的 xml 文件列表,其格式大致相同。

我正在尝试以 pythonic 方式做到这一点

最佳答案

您可以使用 ElementTree API 轻松修改您的 xml 文件

from xml.etree.ElementTree import parse
doc = parse('data.xml')
root = doc.getroot()
for t in root.iterfind('pubgroup/member'):
    t.attrib['objlocation'] = "spam"

doc.write('output.xml', xml_declaration=True)

iterfind方法返回一个 generator 函数而不是 list 如果您的 xml 文件非常大,这将非常方便

输出

<?xml version='1.0' encoding='us-ascii'?>
<publish show="STATE">

    <pubgroup location="/user_data/STATE/ITEM/character/ANM/ANM_rig_WALK_sg_v001/ANM_rig_WALK_sg_v001.xml" objtype="ELE">

        <member objidx="15283942" objlabel="anm" objlocation="spam" />

        <member objidx="15283952" objlabel="fbx" objlocation="spam" />

        <member objidx="15283962" objlabel="mov" objlocation="spam" />

        <member objidx="15283972" objlabel="libraryinfo" objlocation="spam" />

    <member objidx="15283982" objlabel="thumbnail" objlocation="spam" />

</pubgroup>

这里的spamobjlocation的新值。

关于python - 使用 python 编辑 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28274751/

相关文章:

java - 当找不到 @XmlIDREF ref 时,Jaxb 不会抛出异常

ruby - Savon 数组/哈希混淆

python - 如何将参数从 guizero 对象传递给函数?

python - scipy 错误,但没有引发异常

python - Pandas Dataframe 用其他列的第一个值填充列

python - 在 Django 中过滤单个对象的反向关系

python - 如何根据字符串中的位置拆分字符串

go - 解析 plist xml

c# - 如何在 XML 的子节点中查找属性的值?

java - 在hadoop上解析xml文件...