相关疑难解决方法(0)

合并XML文档

我需要"合并"两个XML文档,覆盖重叠的属性和元素.例如,如果我有document1:

<mapping>
    <key value="assigned">
        <a/>
    </key>
    <whatever attribute="x">
        <k/>
        <j/>
    </whatever>
</mapping>
Run Code Online (Sandbox Code Playgroud)

文件2:

<mapping>
    <key value="identity">
        <a/>
        <b/>
    </key>
</mapping>
Run Code Online (Sandbox Code Playgroud)

我想合并这两个:

<mapping>
    <key value="identity">
        <a/>
        <b/>
    </key>
    <whatever attribute="x">
        <k/>
        <j/>
    </whatever>
</mapping>
Run Code Online (Sandbox Code Playgroud)

我更喜欢基于JavaXSLT的解决方案,ant会很好,但是如果有一个简单的方法可以在Rake,RubyPython中做到这一点请不要害羞:-)

编辑:实际上我发现我宁愿使用自动化工具/脚本,甚至自己编写它,因为手动合并大约30个XML文件有点笨拙...... :-(

xml

22
推荐指数
1
解决办法
5万
查看次数

使用没有外部库的嵌套元素合并xml文件

我试图使用Python将多个XML文件合并在一起,而不是外部库.XML文件具有嵌套元素.

示例文件1:

<root>
  <element1>textA</element1>
  <elements>
    <nested1>text now</nested1>
  </elements>
</root>
Run Code Online (Sandbox Code Playgroud)

示例文件2:

<root>
  <element2>textB</element2>
  <elements>
    <nested1>text after</nested1>
    <nested2>new text</nested2>
  </elements>
</root>
Run Code Online (Sandbox Code Playgroud)

我想要的是:

<root>
  <element1>textA</element1>    
  <element2>textB</element2>  
  <elements>
    <nested1>text after</nested1>
    <nested2>new text</nested2>
  </elements>  
</root>  
Run Code Online (Sandbox Code Playgroud)

我尝试过的:

这个答案.

from xml.etree import ElementTree as et
def combine_xml(files):
    first = None
    for filename in files:
        data = et.parse(filename).getroot()
        if first is None:
            first = data
        else:
            first.extend(data)
    if first is not None:
        return et.tostring(first)
Run Code Online (Sandbox Code Playgroud)

我得到了什么:

<root>
  <element1>textA</element1>
  <elements>
    <nested1>text now</nested1>
  </elements>
  <element2>textB</element2>
  <elements>
    <nested1>text after</nested1>
    <nested2>new …
Run Code Online (Sandbox Code Playgroud)

python xml elementtree python-2.7

14
推荐指数
1
解决办法
2万
查看次数

使用toprettyxml()时新行的问题

我目前正在python脚本中使用xml.dom模块的toprettyxml()函数,我对换行有一些麻烦.如果不使用newl参数或者如果我使用toprettyxml(newl ='\n'),它实际上会显示几行而不是一行.

例如

f = open(filename, 'w')
f.write(dom1.toprettyxml(encoding='UTF-8'))
f.close()
Run Code Online (Sandbox Code Playgroud)

显示:

<params>


    <param name="Level" value="#LEVEL#"/>


    <param name="Code" value="281"/>


</params>
Run Code Online (Sandbox Code Playgroud)

有谁知道问题的来源以及如何使用它?仅供参考我使用的是Python 2.6.1

python xml

10
推荐指数
3
解决办法
1万
查看次数

标签 统计

xml ×3

python ×2

elementtree ×1

python-2.7 ×1