elementtree 相关问题

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

使用python在xml中的多个文本之间检索文本

您好,我有如下组成的xml文件,我想检索text1,text2,text3和text4。

回答 1 投票 0

使用Python的ElementTree查找顶级xml注释

我正在使用Python的ElementTree解析xml文件,例如:et = ElementTree(file = file(“ test.xml”))test.xml从几行xml注释开始。有没有办法得到这些评论...

回答 2 投票 3

平整嵌套的XML,同时保持两个标签之间的父子关系

我有一些具有嵌套属性的xml The Beatles

回答 1 投票 0

从字符串中解析XML报告文件中的“垃圾”,我不知道如何找到它

我正在尝试使用元素树解析XML字符串。此字符串来自多个dict值,这些值连接在一起。没有根节点,但第一次运行良好。我第一次这样做,而且......>

回答 1 投票 1

我为什么得到ParseError:格式不正确(无效令牌):第1行,第19列

var = “ hw_reset”&“ reset”]] etree.fromstring(var)引发错误:ParseError:格式不正确(无效令牌):第1行,第19列,我缺少什么?

回答 1 投票 -3

如何在XML Python中迭代一个以上的节点?

我有这样的XML结构:“”“ [[[[[[[[[[[[[[[[[[[[[[[[ 尽管您的问题与上一个相似,但是这次的问题更加简单明了。您可以先提取数据,然后将其拼写为所需的格式。这是一个例子。 从simple_scrapy导入SimplifiedDoc,req,utilsxml =“”“ <pages> <page> <textbox> <new_line> <text size="12.482">C</text> <text size="12.333">A</text> <text size="12.333">P</text> <text size="12.333">I</text> <text size="12.482">T</text> <text size="12.482">O</text> <text size="12.482">L</text> <text size="12.482">O</text> <text></text> <text size="12.482">I</text> <text size="12.482">I</text> <text size="12.482">I</text> <text></text> </new_line> </textbox> </page> </pages> """ doc = SimplifiedDoc(xml) new_line = doc.new_line lastSize = None lst = [] texts = "" for t in new_line.texts: if not lastSize or t.size==lastSize: texts += t.text lastSize = t.size else: lst.append((lastSize,texts)) texts = t.text if t.size: lastSize = t.size else: lst.append("<text />") lastSize=None print(lst) 重新排序: [('12.482', 'C'), ('12.333', 'API'), ('12.482', 'TOLO'), '<text />', ('12.482', 'III'), '<text />']

回答 1 投票 -3

如何使用Python在XML中的节点之后提取信息?

我具有以下XML结构(非常大的文件,还有更多人条目)

回答 1 投票 1

从txt文件中提取xml

我正在尝试从python中的txt文件中提取代码的xml部分。我正在使用的当前txt文件来自edgar数据库,并且在一个txt文件中具有10k报告的多种表示形式,...

回答 1 投票 1

如果使用python在给定列表中出现另一个属性,如何提取XML属性?

我有一个linkId的列表。 links_o_i = [652518、345004、225317、177396、551734]此外,我有一个XML文件,其结构如下:

回答 1 投票 0

使用Python和ElementTree排序XML文档

我正在尝试重组一些xm l文件,这些文件包含完整路由的多个段,这些段的结构如下: GPSRoute.XML ]]]] < [ 我认为,直到到达xpath 3.1为止,还没有真正的方法对xml进行排序,但是有可能在此方面产生混乱。 [请注意,由于您问题中的xml无效(您有未声明的名称空间),因此我使用了更为宽容的html解析器。使用您的实际代码,您应该使用xml解析器,如下所示。 此代码的作用是从每个<name>父节点收集每个<trkseg>子节点的节点值(即您的目标编号),将它们保存到列表中,对列表进行排序,然后再次使用排序后的列表按此排序顺序选择<trkseg>节点,并使用它们(以及开始和结束标记)来创建新的xml。 import lxml.html as lh # with actual xml you would probably use "from lxml import etree" trk = """your xml above""" doc = lh.fromstring(trk) # with actual xml you should probably use "doc = etree.XML(trk)" names = [] new_trk = """<trk> <name>GPSRoute.XML</name>""" # this is the preamble which is left untouched for nam in doc.xpath('//extensions//name'): names.append(nam.text) #grab the numbers for name in sorted(names): #sort the grabbed numbers target = doc.xpath(f'//trkseg[.//name/text()={name}]') for t in target: new_trk += lh.tostring(t).decode() new_trk += '</trk>' # append the closing tag, which is also left untouched print(new_trk) 输出: <trk> <name>GPSRoute.XML</name><trkseg> <trkpt lat="37.077888" lon="-112.242783"> <ele>1688.00</ele> <time>2020-04-18T01:56:39.80Z</time> </trkpt> <extensions> <name>1</name> <color>#00ce00</color> </extensions> </trkseg> <trkseg> <trkpt lat="37.077882" lon="-112.242785"> <ele>1688.00</ele> <time>2020-04-18T01:56:39.80Z</time> </trkpt> <extensions> <name>14</name> <color>#00ce00</color> </extensions> </trkseg> </trk>

回答 1 投票 0

Python解析xml找不到元素

我正在尝试使用xml.etree.ElementTree查找标签。我不知道确切的位置,所以我必须搜索它。输入的是.Net NuGet软件包的NuGet规范。我用这段代码找到了...

回答 1 投票 0

使用python解析带有重点标记的xml文件

我目前正在编写一个Python脚本,该脚本可以提取xml文件中的所有文本。我正在使用元素树库来解释数据,但是当...

回答 1 投票 0

使用Python ElementTree从xml文档中提取文本

我有以下格式的xml文档 记住 []

回答 2 投票 1

Python ElementTree获取具有条件的先前属性

我正在使用XML文件。我的文件是这样的:将xml.etree.ElementTree导入为ET xml =''' [ ] >>

回答 2 投票 0

遍历XML以找到绝对路径

我正在寻找一种遍历XML文件并将元素标签/文本组合成字符串的方法。 XML文件是配置导出。我已经尝试过使用iter()方法,但是它的作用并不完全...

回答 2 投票 0

Python ElementTree“未找到元素”异常

imports:import io import xml.etree.ElementTree as ElementTree注意:在相同的例外情况下,我也查看了其他线程,他们都提到了潜在的问题是XML文件可能会...

回答 1 投票 0

如何在XML Python中的同一父级中基于相同标签的元素进行连接?

我有一个这样的长XML结构: [[[[[]]]]]]]]]] >> 您可以尝试以下方法: 迭代所有new_line元素。对于所有这些new_lines: 查找所有子元素text并将其保存在列表中。 使用text_list使用当前元素和先前元素遍历zip(有关更多详细信息,请参见this discussion:zip(l[:-1], l[1:]) 获取当前和上一个元素的大小 如果它们相等且不都为null: 获取当前和先前的文本 将它们添加到当前元素 使用remove删除上一个元素 代码 import lxml.etree as etree parser = etree.XMLParser(remove_blank_text=True) tree = etree.parse('data.xml', parser) root = tree.getroot() # Iterate over //newline block for new_line_block in tree.xpath('//new_line'): # Find all "test" element in the new_line block list_text_elts = new_line_block.xpath('//text') # Iterate over all of them with the current and previous ones for previous_text, current_text in zip(list_text_elts[:-1], list_text_elts[1:]): # Get size elements prev_size = previous_text.attrib.get('size') curr_size = current_text.attrib.get('size') # If they are equals and not both null if curr_size == prev_size and curr_size is not None: # Get current and previous text pt = previous_text.text if previous_text.text is not None else "" ct = current_text.text if current_text.text is not None else "" # Add them to current element current_text.text = pt + ct # Remove preivous element new_line_block.remove(previous_text) newtree = etree.tostring(root, encoding='utf-8', pretty_print=True) newtree = newtree.decode("utf-8") output.xml<pages> <page id="1" bbox="0.000,0.000,462.047,680.315" rotate="0"> <textbox id="0" bbox="191.745,592.218,249.042,603.578"> <textline bbox="191.745,592.218,249.042,603.578"> <new_line> <text font="QKWQNQ+ImprintMTnum-Bold" bbox="272.661,554.072,277.415,564.757" colourspace="DeviceGray" ncolour="0" size="10.685">1</text> <text font="NUMPTY+ImprintMTnum" bbox="324.480,553.628,327.384,566.110" colourspace="DeviceGray" ncolour="0" size="12.482">sventura] </text> <text font="PYNIYO+ImprintMTnum-Italic" bbox="346.709,553.639,352.505,566.366" colourspace="DeviceGray" ncolour="0" size="12.727">sps. a</text> <text font="NUMPTY+ImprintMTnum" bbox="368.242,553.628,372.759,566.110" colourspace="DeviceGray" ncolour="0" size="12.482">mi-</text> </new_line> </textline> </textbox> </page> </pages> 我让您调整它来处理不同的页面!

回答 1 投票 1

XSLT在新的父标记中的条件下包装指定的元素

我有一个XML结构,如下: [[[[[]]]]]]] 正如@MartinHonnen在他的评论中所说,解决此问题的经典方法是同级递归。 此技术的本质是: 从您应用的父元素textline到第一个子text元素的模板:<xsl:apply-templates select="text[1]"/> 来自子元素text的模板适用于以下同级元素:<xsl:apply-templates select="following-sibling::text[1]"/> 这里有一个可行的技术示例 How to apply XSL templates to start and finish XML element from different parts of the document 看看是否可以适应它。

回答 1 投票 0

使用xml.etree.ElementTree解析XML 1.1控制字符

在Python中,我正在解析包含控制字符的XML:import xml.etree.ElementTree as ET tree = ET.fromstring(' foo bar

回答 1 投票 0

如何通过Python在XML中插入父节点?

我有一个这样的XML文件,每次在坐标中有一定距离(例如,在文件中它们都不同)时,我都想插入标签“ newline”:&...

回答 1 投票 0

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