使用Python minidom修改XML

2024-10-01 17:40:07 发布

您现在位置:Python中文网/ 问答频道 /正文

下面是一个示例XML文件:

<Project attri1="build">
    <Import Project="blahblah" xmlns="someURI" />
    <Property>
        ...
    </Property>
    <Property>
        ...
    </Property>
    ...
    <ItemGroup>
        <Folder Include="Scripts" />
        <Folder Include="Scripts/1.0" />
        <Folder Include="Scripts/2.0/" />
        ...
    </ItemGroup>
      ... some irrelevant ItemGroup is here
    <ItemGroup>
         <None Include="Scripts/1.0/001.sql" />
         <None Include="Scripts/2.0/002.sql" />
    </ItemGroup>
    ...
</Project>

上面的XML文件基于visualstudio的sqlproj文件的模板。是基于什么样的节点来区分的。在


我的研究:

^{pr2}$

我想使用Python的xml.dom.minidom库,并最终重写原始sqlproj文件。在

怎么做?在

如果您建议其他内置库,请举例说明,谢谢。在


Tags: 文件importbuildprojectnone示例sqlinclude
1条回答
网友
1楼 · 发布于 2024-10-01 17:40:07

关于如何区分ItemGroups,您没有提供足够的信息,但我假设这是基于内部节点的类型。在

下面是如何将新的Folder标记插入到Folders和NoneItemGroup中。其思想是找到第一个Folder和{}标记,获取父标记和appendChild到它:

import xml.dom.minidom

data = """<Project attri1="build">
    <Import Project="blahblah" xmlns="someURI" />
    <ItemGroup>
        <Folder Include="Scripts" />
        <Folder Include="Scripts/1.0" />
        <Folder Include="Scripts/2.0/" />
    </ItemGroup>
    <ItemGroup/>
    <ItemGroup>
         <None Include="Scripts/1.0/001.sql" />
         <None Include="Scripts/2.0/002.sql" />
    </ItemGroup>
</Project>"""

dom = xml.dom.minidom.parseString(data)

new_folder = dom.createElement('Folder')
new_folder.setAttribute('Include', 'newpath')

folder = dom.getElementsByTagName('Folder')[0]
folder.parentNode.appendChild(new_folder)

new_script = dom.createElement('Folder')
new_script.setAttribute('Include', 'newsql')

none = dom.getElementsByTagName('None')[0]
none.parentNode.appendChild(new_script)

print dom.toprettyxml()

它打印:

^{pr2}$

相关问题 更多 >

    热门问题