elementtree 相关问题

ElementTree是一个用于创建和解析XML的Python库。

有没有办法使用elementtree更改具有相同标签但不同元素的XML元素

所以我有一个 XML,其中有多行出生日期,但元素不同。 例如,在我的 XML 中,我有以下几行: 1998年3月12日 所以我有一个 XML,其中有多行出生日期,但元素不同。 例如,在我的 XML 中,我有以下几行: <date-of-birth>12-3-1998</date-of-birth> <date-of-birth>12-3-1998</date-of-birth> <date-of-birth>12-3-1998</date-of-birth> <date-of-birth>31-7-1941</date-of-birth> <date-of-birth>23-11-1965</date-of-birth> 我想将仅具有 DOB "12-3-1998" 的行更改为具有 DOB "14-11-2001" 并保持其他行不变,但我正在努力找出如何在不更改所有行或不更改任何行的情况下执行此操作。 我尝试这样做: import xml.etree.ElementTree as ET xml_tree = ET.parse(TestXML.xml) root = xml_tree.getroot() for DOB in root.findall(".//{*}12-3-1998"): DOB.text = "14-11-2001" ET.tostring(root) 但是我的root.findall(".//{*}12-3-1998")没有找到任何东西,所以我所有的出生日期都保持不变 我尝试执行以下操作,但它更改了我的所有 DOB 元素,而我只想更改具有“12-3-1998”的元素: import xml.etree.ElementTree as ET xml_tree = ET.parse(TestXML.xml) root = xml_tree.getroot() for DOB in root.findall(".//{*}date-of-birth"): DOB.text = "14-11-2001" ET.tostring(root) 所以我想知道是否有一种方法可以过滤我想要更改的特定 DOB 是否使用 elementtree 和/或另一个 Python 库? IIUC,你可以这样做: import xml.etree.ElementTree as ET data = """ <data> <date-of-birth>12-3-1998</date-of-birth> <date-of-birth>12-3-1998</date-of-birth> <date-of-birth>12-3-1998</date-of-birth> <date-of-birth>31-7-1941</date-of-birth> <date-of-birth>23-11-1965</date-of-birth> </data> """ root = ET.fromstring(data) for dob in root.findall("date-of-birth"): if dob.text == "12-3-1998": dob.text = "14-11-2001" print(ET.tostring(root).decode("utf-8")) 打印: <data> <date-of-birth>14-11-2001</date-of-birth> <date-of-birth>14-11-2001</date-of-birth> <date-of-birth>14-11-2001</date-of-birth> <date-of-birth>31-7-1941</date-of-birth> <date-of-birth>23-11-1965</date-of-birth> </data>

回答 1 投票 0

使用Python ElementTree解析XML以提取特定数据

我有一个需要解析的xml文件。我对python和xml的理解比较模糊。我正在使用 ElementTree 来解析文档,但是我在网上研究过的几乎所有参考文献都让我开始了解...

回答 1 投票 0

使用Python lxml时出现“无法加载外部实体”错误

我正在尝试解析从网络检索的 XML 文档,但解析后崩溃并出现以下错误: ': 加载外部实体失败“ 我正在尝试解析从网络检索的 XML 文档,但解析后出现此错误,它崩溃了: ': failed to load external entity "<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="GreenButtonDataStyleSheet.xslt"?> 这是下载的 XML 中的第二行。有没有办法阻止解析器尝试加载外部实体,或者有其他方法来解决这个问题?这是我到目前为止的代码: import urllib2 import lxml.etree as etree file = urllib2.urlopen("http://www.greenbuttondata.org/data/15MinLP_15Days.xml") data = file.read() file.close() tree = etree.parse(data) 与 mzjn 所说的一致,如果你确实想将字符串传递给 etree.parse(),只需将其包装在 StringIO 对象中即可。 示例(python2): from lxml import etree from StringIO import StringIO myString = "<html><p>blah blah blah</p></html>" tree = etree.parse(StringIO(myString)) 示例 (python3) 从 io 而不是 StringIO 导入: from lxml import etree from io import StringIO myString = "<html><p>blah blah blah</p></html>" tree = etree.parse(StringIO(myString)) 此方法在lxml文档中使用。 etree.parse(source)预计source成为其中之一 文件名/路径 文件对象 类似文件的对象 使用 HTTP 或 FTP 协议的 URL 问题在于您以字符串形式提供 XML 内容。 您也可以不使用urllib2.urlopen()。只需使用 tree = etree.parse("http://www.greenbuttondata.org/data/15MinLP_15Days.xml") 演示(使用lxml 2.3.4): >>> from lxml import etree >>> tree = etree.parse("http://www.greenbuttondata.org/data/15MinLP_15Days.xml") >>> tree.getroot() <Element {http://www.w3.org/2005/Atom}feed at 0xedaa08> >>> 在竞争答案中,建议lxml失败,因为文档中的处理指令引用了样式表。但这不是这里的问题。 lxml 不会尝试加载样式表,并且如果按照上述操作,XML 文档就可以很好地解析。 如果你想实际加载样式表,你必须明确它。需要这样的东西: from lxml import etree tree = etree.parse("http://www.greenbuttondata.org/data/15MinLP_15Days.xml") # Create an _XSLTProcessingInstruction object pi = tree.xpath("//processing-instruction()")[0] # Parse the stylesheet and return an ElementTree xsl = pi.parseXSL() 用于解析的 lxml 文档说 要从字符串解析,请使用 fromstring() 函数。 parse(...) parse(source, parser=None, base_url=None) Return an ElementTree object loaded with source elements. If no parser is provided as second argument, the default parser is used. The ``source`` can be any of the following: - a file name/path - a file object - a file-like object - a URL using the HTTP or FTP protocol To parse from a string, use the ``fromstring()`` function instead. Note that it is generally faster to parse from a file path or URL than from an open file object or file-like object. Transparent decompression from gzip compressed sources is supported (unless explicitly disabled in libxml2). 您收到该错误是因为您正在加载的 XML 引用了外部资源: <?xml-stylesheet type="text/xsl" href="GreenButtonDataStyleSheet.xslt"?> LXML 不知道如何解析 GreenButtonDataStyleSheet.xslt。你和我可能意识到,它将相对于你的原始 URL 可用,http://www.greenbuttondata.org/data/15MinLP_15Days.xml...诀窍是告诉 lxml 如何加载它。 lxml 文档 包含标题为“文档加载和 URL 解析”的部分,其中几乎包含您需要的所有信息。

回答 4 投票 0

ElementTree:使用findall提取属性值

想要从内部标记中提取名称属性的值,并在名称标签(如果存在)后面附加组名称。我尝试使用 xml.etree.ElementTree 进行提取,但我的代码没有给出

回答 1 投票 0

在python中反序列化xml.data

我有一个包含很多属性的 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 + &quot;.QdwState&quot;; dpMeting = dp +&quot;.QfVal&quot;; dpDesc.setDp(dp); KLIKFRAME.toolTipText(dpDesc.sDescription); //datapunt connectie dpConnectRetVal = dpConnect( &quot;Callback&quot;, 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 = &quot;BNO_Geel&quot;; } else if(alarm) { color = &quot;BNO_Rood&quot;; } else { color = &quot;BNO_Wit&quot;; } Cirkel.foreCol(color); if(low) { Low.backCol(color); } else { Low.backCol(&quot;_Transparent&quot;); } if(high) { High.backCol(color); } else { High.backCol(&quot;_Transparent&quot;); } } 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)

回答 1 投票 0

如何更改elementtree中多个同名元素的文本

所以我有一个 XML,其中有一行: 1.2 这行代码在我的 XML 中出现了两次。 我想更改这两行的文本,使它们都更改为: 0....

回答 1 投票 0

ElementTree 返回 Element 而不是 ElementTree

我正在尝试从字符串构建 ElementTree。当我执行以下操作时(如 Python ElementTree:解析字符串并获取 ElementTree 实例中所述),我得到一个 Element 而不是

回答 2 投票 0

为什么Python3中的xml包会修改我的xml文件?

我使用Python3.5中的xml库来读取和写入xml文件。我不修改文件。只需打开并写入即可。但库修改了该文件。 为什么要修改呢? 我怎样才能防止这种情况发生? ...

回答 1 投票 0

lxml 将元素转换为elementtree

以下测试代码读取文件,并使用lxml.html生成页面的DOM/Graph的叶节点。 然而,我也在试图弄清楚如何从“字符串”中获取输入......

回答 3 投票 0

XML 响应中的访问层

我在访问 request.get 的 XML 响应中的特定层时遇到问题。 我正在尝试访问位于内容下方的 Radar_UK_Composite_Highres 的“时间”值。 XML

回答 1 投票 0

如何更改已读入 Python 的 XML 的特定部分,然后使用此更改创建新的 XML?

所以我使用 BeautifulSoup 来读取和解析下面的 XML: 从 bs4 导入 BeautifulSoup 将 open(r"....TestXML.xml", 'r') 作为 f: 数据 = f.read() bs_data = BeautifulSoup(数据, "...

回答 1 投票 0

ElementTree 删除元素

这里是Python菜鸟。想知道删除所有更新属性值为 true 的“配置文件”标签的最干净、最好的方法是什么。 我已经尝试过以下代码,但它抛出: SyntaxError("

回答 2 投票 0

在Python中使用elementTree搜索和删除元素

我有一个 XML 文档,我想在其中搜索某些元素以及它们是否匹配某些条件 我想删除它们 但是,我似乎无法访问该元素的父元素...

回答 9 投票 0

列表比较“==”与“in”与elementtree

我正在解析一个 XML,两个元素具有相同的名称,但两个选项中的每个元素都需要唯一的值。我能够让代码按我想要的方式运行,但我不确定......

回答 1 投票 0

在 Python 中将 XML 解析为 CSV

我正在尝试编写一个Python脚本来解析XML文件并为XML中的每个表生成CSV文件。每个表都应包含其属性。此外,我想创建一个 CSV 文件

回答 1 投票 0

添加/追加新的 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())

回答 1 投票 0

Python xml 解析器如何检测编码(utf-8 与 utf-16)?

Python XML 解析器可以解析各种编码的字节字符串(即使 XML 标头中没有指定编码): 从 xml.etree 导入 ElementTree as ET xml_string = '格鲁克...

回答 1 投票 0

在 Python 中从文件路径解析 MusicXML 文件时遇到问题

我正在开发一个Python项目,我需要解析MusicXML文件。到目前为止,我已经手动将这些文件中的内容复制到字符串变量中,并且代码运行良好。然而,...

回答 1 投票 0

Python elementree 可以获取祖父属性值

我有 xml 文件,其内容如下。如果其属性作业与值“al”匹配并且运行与值“jps”匹配,则希望从 XML 中提取用户类别下的名称值...

回答 1 投票 0

在Python中从给定的html获取所有xpath列表的最佳方法是什么?

我希望从Python中的给定html中获取所有xpath的列表。我当前的实现仅使用 lxml 库为我提供相对 xpath。我需要 xpath 来使用 ids 和其他

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.