Python在XML文件中复制了属性

2024-05-15 01:13:57 发布

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

我是一名新的Python编程人员,我无法解决我的问题:(

我想知道有一种方法可以列出XML文件中的所有重复信息,我使用iter来显示GroupMap的迭代,但现在我只需要列出重复的信息

对于root.iter('GroupMap')中的dup: 打印(复制属性)

因此,我得到了下一个列表,其中XML的每个部分都有GroupMap:

<?xml version="1.0"?>
<GroupMapping>
  <GroupMap groupN="Q123/Etats0A">False</GroupMap>
  <GroupMap groupN="Q123/EtatsSys0A">False</GroupMap>
  <GroupMap groupN="Q123/Etats_M_A0A">False</GroupMap>
  <GroupMap groupN="Q123/MesE0A">False</GroupMap>
  <GroupMap groupN="Q123/Mes_M_A0A">False</GroupMap>
  <GroupMap groupN="Q123/PositionsApp0A">False</GroupMap>
  <GroupMap groupN="Q123/Etats0A">False</GroupMap>
  <GroupMap groupN="Q123/EtatsSys0A">False</GroupMap>
  <GroupMap groupN="Q123/Etats_M_A0A">False</GroupMap>
  <GroupMap groupN="Q123/MesE0A">False</GroupMap>
  <GroupMap groupN="Q123/Mes_M_A0A">False</GroupMap>
  <GroupMap groupN="Q123/PositionsApp0A">False</GroupMap>
  <GroupMap groupN="Q123/Etats0A">False</GroupMap>
  <GroupMap groupN="Q123/EtatsSys0A">False</GroupMap>
  <GroupMap groupN="Q123/Etats_M_A0A">False</GroupMap>
  <GroupMap groupN="Q123/MesE0A">False</GroupMap>
  <GroupMap groupN="Q123/Mes_M_A0A">False</GroupMap>
  <GroupMap groupN="Q123/PositionsApp0A">False</GroupMap>
  <GroupMap groupN="Q123/Etats0A">False</GroupMap>
  <GroupMap groupN="Q123/EtatsSys0A">False</GroupMap>
  <GroupMap groupN="Q123/Etats_M_A0A">False</GroupMap>
  <GroupMap groupN="Q123/MesE0A">False</GroupMap>
  <GroupMap groupN="Q123/Mes_M_A0A">False</GroupMap>
  <GroupMap groupN="Q123/PositionsApp0A">False</GroupMap>
</GroupMapping>

我的尝试:

import xml.etree.ElementTree as ET 
from tkinter import filedialog 
from tkinter import * 

root1=Tk() 
root1.filename = filedialog.askopenfilename(
    initialdir="C:/Users/Administrator/Downloads/Python-XML-Parser-master/Python-XML-Parser-master/Test", 
    title="Select XML File", 
    filetypes=(("XML files", ".xml"),("all files", ".*"))
) 
tree=ET.parse(root1.filename) 
root=tree.getroot() 
tag=root.tag 
for neighbor in root.iter('GroupMapping'): 
    print(neighbor.attrib) 

Tags: falserootxmlitermesgroupmapmese0apositionsapp0a
2条回答

假设xml文件名为file.xml

with open("file.xml") as xml_file:
    lines = xml_file.readlines()
    processed_lines = set()
    for line in lines:
        if line in processed_lines:
            print(line)
        processed_lines.add(line)

这将打印所有重复的行

如果您只需要唯一的,集合processed_lines就有它们

我不明白tkinter代码到底在做什么(我对该软件包不太熟悉),因此我将忽略它,并向您展示原始xml解析:

from xml.etree import ElementTree as ET

et = ET.parse('path/to/xml_file.xml')
group_set = set()

for group in et.findall('GroupMap'):
    group_attr = group.attrib['groupN']
    if group_attr in group_set:
        print(group_attr)
    else:
        group_set.add(group_attr)

如果只需要具有不同内部文本值的副本,还可以将元素groupN属性与相应的组文本组合起来:

from xml.etree import ElementTree as ET

et = ET.parse('path/to/xml_file.xml')
group_set = set()

for group in et.findall('GroupMap'):
    group_obj = (group.attrib['groupN'], group.text)
    if group_obj in group_set:
        print(group_obj)
    else:
        group_set.add(group_obj)

相关问题 更多 >

    热门问题