ElementTree是一个用于创建和解析XML的Python库。
想要从内部标记中提取名称属性的值,并在名称标签(如果存在)后面附加组名称。我尝试使用 xml.etree.ElementTree 进行提取,但我的代码没有给出
我有一个包含很多属性的 xml 文件。所有属性都有相同的名称 我有一个包含很多属性的 xml 文件。所有属性都有相同的名称 我确实有一个解决方案,但它需要将 id 添加到属性中,以便我可以选择我想要的解决方案。但这需要在 xml 文件中进行调整。至于我的研究论文,我无法更改 xml 文件。那么,有没有一个命令或一段代码可以让 python 知道,我只想要属性名称,其值为 Geometry?例如。 如果我打电话给酒店,我就会得到所有的信息。我不知道如何过滤这部分以获得我想要的部分。有什么建议吗? 我在 python 中添加了我的解决方案。但一定有一种方法无需对 xml 进行调整。 ''' import xml.etree.ElementTree as ET #parse mytree = ET.parse('C:/Users/f.badloe/.spyder-py3\Stagefiles/ASD_18_244_KW_0001_WM0230(BaseanlogROB).xml') # data van xml naar python myroot = mytree.getroot() # data zoeken in de xml file #print (myroot.tag) #print (myroot[2][0][0][0].tag) #myroot[2].set('Test','20') ''' for reference in myroot.iter('prop'): print(reference.attrib) print(reference.text) ''' '''all shapes of the figures ''' for shape in myroot.iter('shape'): shapeType = shape.attrib['shapeType'] shapeName =shape.attrib['Name'] print(shapeName) ''' id=1 for z in myroot.iter('prop'): z.set('id', str(id)) id += 1 #print(z.attrib) ''' ''' Geometries values of all shapes individual manier 1 ''' ''' Geometry = myroot.find(".//prop[@id='35']") print(Geometry.text) print(Geometry.attrib) Geometry = myroot.find(".//prop[@id='65']") print(Geometry.text) print(Geometry.attrib) Geometry = myroot.find(".//prop[@id='95']") print(Geometry.text) print(Geometry.attrib) Geometry = myroot.find(".//prop[@id='124']") print(Geometry.text) print(Geometry.attrib) Geometry = myroot.find(".//prop[@id='147']") print(Geometry.text) print(Geometry.attrib) Geometry = myroot.find(".//prop[@id='170']") print(Geometry.text) print(Geometry.attrib) Geometry = myroot.find(".//prop[@id='192']") print(Geometry.text) print(Geometry.attrib) ''' '''manier 2 ''' #for elements in myroot.findall(".//shape//prop[@name = 'Geometry']"): #print(elements.text, shapeName) for elements in myroot.findall(".//shape//prop[@name = 'Location']"): print(elements.text) #nieuwe xml file mytree.write ('ASD_18_244_KW_0001_WM0230') ''' ''' <?xml version="1.0" encoding="UTF-8"?> <panel version="14"> <properties> <prop name="Name"> <prop name="nl_NL.utf8"></prop> </prop> <prop name="Size">125 112</prop> <prop name="BackColor">BNO_DonkerGrijs</prop> <prop name="RefPoint">38 53</prop> <prop name="InitAndTermRef">True</prop> <prop name="SendClick">False</prop> <prop name="RefFileName"></prop> <prop name="DPI">96</prop> <prop name="PDPI">141.951</prop> <prop name="ConnectorPoints"> <prop name="Location" id="1">28 63</prop> <prop name="Location" id="2">53 38</prop> <prop name="Location" id="3">28 13</prop> <prop name="Location" id="4">3 38</prop> </prop> <prop name="layoutType">None</prop> </properties> <events> <script name="ScopeLib" isEscaped="1"><![CDATA[public void SetVisibility(bool visible) { Waarde.visible(visible); Uom.visible(visible); Naam.visible(visible); High.visible(visible); Low.visible(visible); Cirkel.visible(visible); KLIKFRAME.visible(visible); } string dp, naam, uom, dpQdwState, dpMeting; DatapuntDescription dpDesc; void Init() { int dpConnectRetVal; dp = $dp; naam = $naam; uom = $uom; dpQdwState = dp + ".QdwState"; dpMeting = dp +".QfVal"; dpDesc.setDp(dp); KLIKFRAME.toolTipText(dpDesc.sDescription); //datapunt connectie dpConnectRetVal = dpConnect( "Callback", true, dpQdwState, dpMeting); CheckDpConnect(dpConnectRetVal, getLastError()); Naam.text = naam; Uom.text = uom; Waarde.format = $format; } void Callback(string DPE1, bit32 states, string DPE2, float meting) { Waarde.text = meting; Waarde.format = $format; bool warning = getBit(states, 6), alarm = getBit(states, 7), low = getBit(states, 10), high = getBit(states, 11); string color; if(warning) { color = "BNO_Geel"; } else if(alarm) { color = "BNO_Rood"; } else { color = "BNO_Wit"; } Cirkel.foreCol(color); if(low) { Low.backCol(color); } else { Low.backCol("_Transparent"); } if(high) { High.backCol(color); } else { High.backCol("_Transparent"); } } void OpenOnderhoud() { OpenFaceplate(dp , dpDesc.sDescription); } ]]></script> <script name="Initialize" isEscaped="1"><![CDATA[main() { Init(); } ]]></script> </events> <shapes> <shape Name="Waarde" shapeType="PRIMITIVE_TEXT" layerId="0"> <properties> <prop name="serialId">1</prop> <prop name="Type"></prop> <prop name="RefPoint">41 28</prop> <prop name="Enable">True</prop> <prop name="Visible">True</prop> <prop name="ForeColor">BNO_Wit</prop> <prop name="BackColor">_Window</prop> <prop name="TabOrder">0</prop> <prop name="ToolTipText"> <prop name="nl_NL.utf8"></prop> </prop> <prop name="TransparentForMouse">True</prop> <prop name="layoutAlignment">AlignNone</prop> <prop name="snapMode">Point</prop> <prop name="DashBackColor">_Transparent</prop> <prop name="AntiAliased">False</prop> <prop name="LineType">[solid,oneColor,JoinBevel,CapProjecting,1]</prop> <prop name="BorderZoomable">False</prop> <prop name="FillType">[outline]</prop> <prop name="Geometry">1 0 0 0.7857142857142857 -13 9</prop> <prop name="Location">41 28</prop> <prop name="Font"> <prop name="nl_NL.utf8">Arial Narrow,-1,11,5,50,0,0,0,0,0,Standaard</prop>r </prop> <prop name="Text"> <prop name="nl_NL.utf8">Waarde</prop> </prop> <prop name="Distance">2</prop> <prop name="BorderOffset">2</prop> <prop name="Bordered">False</prop> <prop name="Fit">True</prop> <prop name="Transformable">False</prop> <prop name="TextFormat">[0.3f,False,False,AlignHCenter,False,False]</prop> </properties> </shape> <shape Name="Uom" shapeType="PRIMITIVE_TEXT" layerId="0"> <properties> <prop name="serialId">2</prop> <prop name="Type"></prop> <prop name="RefPoint">75 28</prop> <prop name="Enable">True</prop> <prop name="Visible">True</prop> <prop name="ForeColor">BNO_Wit</prop> <prop name="BackColor">_Window</prop> <prop name="TabOrder">1</prop> <prop name="ToolTipText"> <prop name="nl_NL.utf8"></prop> </prop> <prop name="TransparentForMouse">True</prop> <prop name="layoutAlignment">AlignNone</prop> <prop name="snapMode">Point</prop> <prop name="DashBackColor">_Transparent</prop> <prop name="AntiAliased">False</prop> <prop name="LineType">[solid,oneColor,JoinBevel,CapProjecting,1]</prop> <prop name="BorderZoomable">False</prop> <prop name="FillType">[outline]</prop> <prop name="Geometry">1.409090909090909 0 0 0.8571428571428571 -77.68181818181817 20</prop> <prop name="Location">75 28</prop> <prop name="Font"> <prop name="nl_NL.utf8">Arial Narrow,-1,11,5,50,0,0,0,0,0,Standaard</prop> </prop> <prop name="Text"> <prop name="nl_NL.utf8">Uom</prop> </prop> <prop name="Distance">2</prop> <prop name="BorderOffset">2</prop> <prop name="Bordered">False</prop> <prop name="Fit">True</prop> <prop name="Transformable">False</prop> <prop name="TextFormat">[0s,,,AlignHCenter]</prop> </properties> </shape> <shape Name="Naam" shapeType="PRIMITIVE_TEXT" layerId="0"> <properties> <prop name="serialId">3</prop> <prop name="Type"></prop> <prop name="RefPoint">67 37</prop> <prop name="Enable">True</prop> <prop name="Visible">True</prop> <prop name="ForeColor">BNO_Wit</prop> <prop name="BackColor">_Window</prop> <prop name="TabOrder">2</prop> <prop name="ToolTipText"> <prop name="nl_NL.utf8"></prop> </prop> <prop name="TransparentForMouse">True</prop> <prop name="layoutAlignment">AlignNone</prop> <prop name="snapMode">Point</prop> <prop name="DashBackColor">_Transparent</prop> <prop name="AntiAliased">False</prop> <prop name="LineType">[solid,oneColor,JoinBevel,CapProjecting,1]</prop> <prop name="BorderZoomable">False</prop> <prop name="FillType">[outline]</prop> <prop name="Geometry">1.758538587848933 0 0 1 -90.44162561576357 24</prop> <prop name="Location">67 37</prop> <prop name="Font"> <prop name="nl_NL.utf8">Arial Narrow,-1,11,5,50,0,0,0,0,0,Standaard</prop> </prop> <prop name="Text"> <prop name="nl_NL.utf8">NAAM</prop> </prop> <prop name="Distance">2</prop> <prop name="BorderOffset">2</prop> <prop name="Bordered">False</prop> <prop name="Fit">True</prop> <prop name="Transformable">False</prop> <prop name="TextFormat">[0s,,,AlignHCenter]</prop> </properties> </shape> <shape Name="High" shapeType="POLYGON" layerId="0"> <properties> <prop name="serialId">4</prop> <prop name="Type"></prop> <prop name="RefPoint">90 40</prop> <prop name="Enable">True</prop> <prop name="Visible">True</prop> <prop name="ForeColor">_Transparent</prop> <prop name="BackColor">_Transparent</prop> <prop name="TabOrder">3</prop> <prop name="ToolTipText"> <prop name="nl_NL.utf8"></prop> </prop> <prop name="layoutAlignment">AlignNone</prop> <prop name="snapMode">Point</prop> <prop name="DashBackColor">_Transparent</prop> <prop name="AntiAliased">True</prop> <prop name="LineType">[solid,oneColor,JoinBevel,CapProjecting,1]</prop> <prop name="BorderZoomable">False</prop> <prop name="FillType">[solid]</prop> <prop name="Geometry">1 0 0 1 -70.00000000000003 -14</prop> <prop name="Closed">True</prop> <prop name="Points"> <prop name="Location">90 40</prop> <prop name="Location">98 30</prop> <prop name="Location">106 40</prop> </prop> </properties> </shape> <shape Name="Low" shapeType="POLYGON" layerId="0"> <properties> <prop name="serialId">6</prop> <prop name="Type"></prop> <prop name="RefPoint">90 50</prop> <prop name="Enable">True</prop> <prop name="Visible">True</prop> <prop name="ForeColor">_Transparent</prop> <prop name="BackColor">_Transparent</prop> <prop name="TabOrder">5</prop> <prop name="ToolTipText"> <prop name="nl_NL.utf8"></prop> </prop> <prop name="layoutAlignment">AlignNone</prop> <prop name="snapMode">Point</prop> <prop name="DashBackColor">_Transparent</prop> <prop name="AntiAliased">True</prop> <prop name="LineType">[solid,oneColor,JoinBevel,CapProjecting,1]</prop> <prop name="BorderZoomable">False</prop> <prop name="FillType">[solid]</prop> <prop name="Geometry">1.142857142857143 0 0 1 -82.85714285714288 -34</prop> <prop name="Closed">True</prop> <prop name="Points"> <prop name="Location">90 50</prop> <prop name="Location">97 60</prop> <prop name="Location">104 50</prop> </prop> </properties> </shape> <shape Name="Cirkel" shapeType="ELLIPSE" layerId="0"> <properties> <prop name="serialId">8</prop> <prop name="Type"></prop> <prop name="RefPoint">30.5 48.5</prop> <prop name="Enable">True</prop> <prop name="Visible">True</prop> <prop name="ForeColor">BNO_Wit</prop> <prop name="BackColor">_Transparent</prop> <prop name="TabOrder">6</prop> <prop name="ToolTipText"> <prop name="nl_NL.utf8"></prop> </prop> <prop name="layoutAlignment">AlignNone</prop> <prop name="snapMode">Point</prop> <prop name="DashBackColor">_Transparent</prop> <prop name="AntiAliased">True</prop> <prop name="LineType">[solid,oneColor,JoinBevel,CapProjecting,2]</prop> <prop name="BorderZoomable">False</prop> <prop name="FillType">[solid]</prop> <prop name="Geometry">0.8508771929824561 0 0 0.8508771929824561 2.048245614035088 -3.267543859649122</prop> <prop name="Center">30.5 48.5</prop> <prop name="X-Radius">28.5</prop> <prop name="Y-Radius">28.5</prop> </properties> </shape> <shape Name="KLIKFRAME" shapeType="RECTANGLE" layerId="0"> <properties> <prop name="serialId">10</prop> <prop name="Type"></prop> <prop name="RefPoint">385 122</prop> <prop name="Enable">True</prop> <prop name="Visible">True</prop> <prop name="ForeColor">_Transparent</prop> <prop name="BackColor">_Transparent</prop> <prop name="HoverForeCol">BNO_Wit</prop> <prop name="TabOrder">7</prop> <prop name="ToolTipText"> <prop name="nl_NL.utf8"></prop> </prop> <prop name="layoutAlignment">AlignNone</prop> <prop name="snapMode">Point</prop> <prop name="DashBackColor">_Transparent</prop> <prop name="AntiAliased">False</prop> <prop name="LineType">[solid,oneColor,JoinBevel,CapProjecting,1]</prop> <prop name="BorderZoomable">False</prop> <prop name="FillType">[solid]</prop> <prop name="Geometry">0.1256281407035175 0 0 0.5039370078740157 4.633165829145731 13.51968503937009</prop> <prop name="BorderStyle">Normal</prop> <prop name="Location">385 122</prop> <prop name="Size">-399 -128</prop> <prop name="CornerRadius">0</prop> <prop name="Transformable">True</prop> </properties> <events> <script name="Clicked" isEscaped="1"><![CDATA[main(mapping event) { OpenOnderhoud(); } ]]></script> </events> </shape> <reference parentSerial="-1" Name="IOERROR" referenceId="1"> <properties> <prop name="FileName">Generiek/Symbolen/SymIOFAIL.pnl</prop> <prop name="Location">0 0</prop> <prop name="Geometry">5.555555555555555 0 0 7.11111111111111 2.999999999999999 11</prop> <prop name="TabOrder">8</prop> <prop name="dollarParameters"> <prop name="dollarParameter"> <prop name="Dollar">$dp</prop> <prop name="Value">$dp</prop> </prop> </prop> <prop name="layoutAlignment">AlignNone</prop> </properties> </reference> </shapes> <groups> <layout parentSerial="-1" Name="LAYOUT_GROUP1" serial="0"> <properties> <prop name="shapeSerial">2</prop> <prop name="shapeSerial">1</prop> <prop name="isContainerShape">False</prop> <prop name="layoutType">Grid</prop> </properties> </layout> </groups> </panel> ''' 我找到了一个解决方案,无需在 xml 文件中进行调整。 通过这个命令我可以选择我需要的属性。 for prop in myroot.findall(".//shape[@Name= 'Waarde']//prop[@name ='RefPoint']"): RefPoint= print(prop.text)
所以我有一个 XML,其中有一行: 1.2 这行代码在我的 XML 中出现了两次。 我想更改这两行的文本,使它们都更改为: 0....
ElementTree 返回 Element 而不是 ElementTree
我正在尝试从字符串构建 ElementTree。当我执行以下操作时(如 Python ElementTree:解析字符串并获取 ElementTree 实例中所述),我得到一个 Element 而不是
我使用Python3.5中的xml库来读取和写入xml文件。我不修改文件。只需打开并写入即可。但库修改了该文件。 为什么要修改呢? 我怎样才能防止这种情况发生? ...
以下测试代码读取文件,并使用lxml.html生成页面的DOM/Graph的叶节点。 然而,我也在试图弄清楚如何从“字符串”中获取输入......
我在访问 request.get 的 XML 响应中的特定层时遇到问题。 我正在尝试访问位于内容下方的 Radar_UK_Composite_Highres 的“时间”值。 XML
如何更改已读入 Python 的 XML 的特定部分,然后使用此更改创建新的 XML?
所以我使用 BeautifulSoup 来读取和解析下面的 XML: 从 bs4 导入 BeautifulSoup 将 open(r"....TestXML.xml", 'r') 作为 f: 数据 = f.read() bs_data = BeautifulSoup(数据, "...
这里是Python菜鸟。想知道删除所有更新属性值为 true 的“配置文件”标签的最干净、最好的方法是什么。 我已经尝试过以下代码,但它抛出: SyntaxError("
我有一个 XML 文档,我想在其中搜索某些元素以及它们是否匹配某些条件 我想删除它们 但是,我似乎无法访问该元素的父元素...
我正在解析一个 XML,两个元素具有相同的名称,但两个选项中的每个元素都需要唯一的值。我能够让代码按我想要的方式运行,但我不确定......
我正在尝试编写一个Python脚本来解析XML文件并为XML中的每个表生成CSV文件。每个表都应包含其属性。此外,我想创建一个 CSV 文件
添加/追加新的 xml 节点到现有 xml 文件 - python
我有一个如下所示的xml文件 a1 我有一个如下所示的 xml 文件 <add-g> <entry name="g1"> <static> <member>a1</member> </static> </entry> <entry name="g2"> <static> <member>a1</member> </static> </entry> </add-g> 我需要在同一个 xml 文件中附加另一个条目名称,例如 g3 和成员 a3,以便最终结构为: 如何使用 lxml 在 python 中执行此操作 <add-g> <entry name="g1"> <static> <member>a1</member> </static> </entry> <entry name="g2"> <static> <member>a1</member> </static> </entry> <entry name="g3"> <static> <member>a1</member> </static> </entry> </add-g> 请先尝试并在此处发布您的问题。 这就是您实现目标的方法。 from lxml import etree # Load your XML xml_string = '''<add-g> <entry name="g1"> <static> <member>a1</member> </static> </entry> <entry name="g2"> <static> <member>a1</member> </static> </entry> </add-g>''' # Parse the XML root = etree.fromstring(xml_string) # Create new entry new_entry = etree.Element("entry", name="g3") new_static = etree.SubElement(new_entry, "static") new_member = etree.SubElement(new_static, "member") new_member.text = "a3" # Append the new entry to the root element root.append(new_entry) # Convert back to string (or write to file) updated_xml = etree.tostring(root, pretty_print=True, xml_declaration=True, encoding="UTF-8") print(updated_xml.decode())
Python xml 解析器如何检测编码(utf-8 与 utf-16)?
Python XML 解析器可以解析各种编码的字节字符串(即使 XML 标头中没有指定编码): 从 xml.etree 导入 ElementTree as ET xml_string = '格鲁克...
在 Python 中从文件路径解析 MusicXML 文件时遇到问题
我正在开发一个Python项目,我需要解析MusicXML文件。到目前为止,我已经手动将这些文件中的内容复制到字符串变量中,并且代码运行良好。然而,...
我有 xml 文件,其内容如下。如果其属性作业与值“al”匹配并且运行与值“jps”匹配,则希望从 XML 中提取用户类别下的名称值...
在Python中从给定的html获取所有xpath列表的最佳方法是什么?
我希望从Python中的给定html中获取所有xpath的列表。我当前的实现仅使用 lxml 库为我提供相对 xpath。我需要 xpath 来使用 ids 和其他
我知道已经有几个关于 xml 排序的问题,但它们似乎都不适合我的情况。 我有以下 xml 文件,表示电子数据模式的剪裁...
如何使用 Python 中的 Elementtree 搜索 XML 中特定于命名空间的标签? 我有一个 XML/RSS 文档,例如: 如何使用 Python 中的 Elementtree 搜索 XML 中特定于命名空间的标签? 我有一个 XML/RSS 文档,例如: <?xml version="1.0" encoding="UTF-8"?> <rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:wp="http://wordpress.org/export/1.0/" > <channel> <title>sometitle</title> <pubDate>Tue, 28 Aug 2012 22:36:02 +0000</pubDate> <generator>http://wordpress.org/?v=2.5.1</generator> <language>en</language> <wp:wxr_version>1.0</wp:wxr_version> <wp:category><wp:category_nicename>apache</wp:category_nicename><wp:category_parent></wp:category_parent><wp:cat_name><![CDATA[Apache]]></wp:cat_name></wp:category> </channel> </rss> 但是当我尝试通过以下方式找到所有“wp:category”标签时: import xml.etree.ElementTree as xml tree = xml.parse(fn) doc = tree.getroot() categories = doc.findall('channel/wp:category') 我收到错误: SyntaxError: prefix 'wp' not found in prefix map 搜索任何非命名空间特定字段都可以正常工作。我做错了什么? 您需要处理名称空间前缀,可以使用 iterparse 并直接处理事件,也可以在解析之前显式声明您感兴趣的前缀。根据您想要做什么,我承认在我比较懒的时候,我只是在解析 XML 之前用字符串替换删除所有前缀。 编辑:这个类似的问题可能会有所帮助。
我有一个对象,它可以从 XML 字符串构建自身,并将其自身写入 XML 字符串。我想编写一个单元测试来测试通过 XML 的往返,但我在比较时遇到困难...