【问题标题】:Merging multiple xml files with different attributes into one attribute将多个不同属性的xml文件合并为一个属性
【发布时间】:2017-03-03 16:45:55
【问题描述】:

我正在尝试将多个 xml 文件合并为一个。我遇到了多个以前回答过的类似解决方案。但是,我还没有找到一个适合我的问题。我有 3 个具有不同属性的 xml 文件。其中一个 xml 文件有一个<main1></main>。我正在尝试获取其他 xml 文件的内容并将其与现有数据一起放置在此标记中。

test1.xml

<acura>
    <Brand>Acura</Brand>
    <Model>NSX 2017</Model>
    <Price>156000</Price>
</acura>

file2.xml

<honda>
    <Brand>Honda</Brand>
    <Model>Accord</Model>
    <Price>24</Price>
</honda>

something3.xml

<main>
<bmw>
    <Brand>BMW</Brand>
    <Model>5 Series</Model>
    <Price>51200</Price>
</bwm>
</main>

【问题讨论】:

  • 您是否已经有任何代码或者您希望有人为您编写代码?如果你有,请展示它,否则我不确定有人会写代码。如果不需要使用 elementtree,我有类似的代码,我可以根据您的需要采用。
  • 文件(汽车)中的数据总是不同?是否可能重复?
  • @TitanFighter 我一直在尝试使用此代码 here 但没有运气
  • @DanilaGanchar 抱歉,我相应地更新了标签
  • @MaryCoding 添加一些来源你尝试了什么。

标签: python xml elementtree


【解决方案1】:

您可能需要了解的主要内容是insert

解析每个文件,然后使用Brand 作为父或祖父导航到汽车的品牌。最后insert

>>> import os
>>> os.chdir('c:/scratch')
>>> from lxml import etree
>>> test1 = etree.parse('test1.xml')
>>> file2 = etree.parse('file2.xml')
>>> something3 = etree.parse('something3.xml')
>>> acura = test1.find('Brand').getparent()
>>> acura
<Element acura at 0xa27388>
>>> honda = file2.find('Brand').getparent()
>>> main = something3.xpath('.//Brand')[0].getparent().getparent()
>>> main.insert(0, acura)
>>> main.insert(0, honda)
>>> str = etree.tostring(main, pretty_print=True)
>>> str
b'<main>\n<honda>\n    <Brand>Honda</Brand>\n    <Model>Accord</Model>\n    <Price>24</Price>\n</honda><acura>\n    <Brand>Acura</Brand>\n    <Model>NSX 2017</Model>\n    <Price>156000</Price>\n</acura><bmw>\n    <Brand>BMW</Brand>\n    <Model>5 Series</Model>\n    <Price>51200</Price>\n</bmw>\n</main>\n'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-31
    • 2021-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-05
    相关资源
    最近更新 更多