久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

如何獲取 Python 中兩個 xml 標簽之間的全部內容

How do I get the whole content between two xml tags in Python?(如何獲取 Python 中兩個 xml 標簽之間的全部內容?)
本文介紹了如何獲取 Python 中兩個 xml 標簽之間的全部內容?的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

我嘗試獲取打開的 xml 標記和它的關閉對應項之間的全部內容.

I try to get the whole content between an opening xml tag and it's closing counterpart.

像下面的 title 這樣直接獲取內容很容易,但是如果 mixed-content 被使用,我想保留內部標簽?

Getting the content in straight cases like title below is easy, but how can I get the whole content between the tags if mixed-content is used and I want to preserve the inner tags?

<?xml version="1.0" encoding="UTF-8"?>
<review>
  <title>Some testing stuff</title>
  <text sometimes="attribute">Some text with <extradata>data</extradata> in it.
  It spans <sometag>multiple lines: <tag>one</tag>, <tag>two</tag> 
  or more</sometag>.</text>
</review>

我想要的是兩個text標簽之間的內容,包括任何標簽:Some text with <extradata>data</extradata>在里面.它跨越<sometag>多行:<tag>one</tag>、<tag>two</tag>或更多</sometag>.

現(xiàn)在我使用正則表達式,但它有點亂,我不喜歡這種方法.我傾向于基于 XML 解析器的解決方案.我查看了 minidometreelxmlBeautifulSoup,但找不到適合這種情況的解決方案(整個內容,包括內部標簽).

For now I use regular expressions but it get's kinda messy and I don't like this approach. I lean towards a XML parser based solution. I looked over minidom, etree, lxml and BeautifulSoup but couldn't find a solution for this case (whole content, including inner tags).

推薦答案

from lxml import etree
t = etree.XML(
"""<?xml version="1.0" encoding="UTF-8"?>
<review>
  <title>Some testing stuff</title>
  <text>Some text with <extradata>data</extradata> in it.</text>
</review>"""
)
(t.text + ''.join(map(etree.tostring, t))).strip()

這里的訣竅是 t 是可迭代的,并且在迭代時會產(chǎn)生所有子節(jié)點.因為etree避免了文本節(jié)點,所以還需要恢復第一個子標簽之前的文本,用t.text.

The trick here is that t is iterable, and when iterated, yields all child nodes. Because etree avoids text nodes, you also need to recover the text before the first child tag, with t.text.

In [50]: (t.text + ''.join(map(etree.tostring, t))).strip()
Out[50]: '<title>Some testing stuff</title>
  <text>Some text with <extradata>data</extradata> in it.</text>'

或者:

In [6]: e = t.xpath('//text')[0]

In [7]: (e.text + ''.join(map(etree.tostring, e))).strip()
Out[7]: 'Some text with <extradata>data</extradata> in it.'

這篇關于如何獲取 Python 中兩個 xml 標簽之間的全部內容?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網(wǎng)!

【網(wǎng)站聲明】本站部分內容來源于互聯(lián)網(wǎng),旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯(lián)系我們刪除處理,感謝您的支持!

相關文檔推薦

Troubles while parsing with python very large xml file(使用 python 解析非常大的 xml 文件時出現(xiàn)問題)
Find all nodes by attribute in XML using Python 2(使用 Python 2 在 XML 中按屬性查找所有節(jié)點)
Python - How to parse xml response and store a elements value in a variable?(Python - 如何解析 xml 響應并將元素值存儲在變量中?)
How to get XML tag value in Python(如何在 Python 中獲取 XML 標記值)
How to correctly parse utf-8 xml with ElementTree?(如何使用 ElementTree 正確解析 utf-8 xml?)
Parse XML from URL into python object(將 XML 從 URL 解析為 python 對象)
主站蜘蛛池模板: 国产亚洲精品精品国产亚洲综合 | 国产精品不卡视频 | 能免费看的av | 国产小视频在线 | 亚洲国产精品va在线看黑人 | 久久福利电影 | 免费三级av| 中文字幕一区二区在线观看 | 伊人焦久影院 | 欧美精品在欧美一区二区 | 久久精品视频网站 | 午夜精品一区二区三区在线观看 | 成人在线观看免费观看 | 国产精品久久久久久 | 亚洲精品视频在线播放 | 日韩电影中文字幕 | 中文字幕不卡视频在线观看 | 成人精品一区二区三区中文字幕 | 国产精品福利一区二区三区 | 7777在线视频| 欧美国产视频一区二区 | 成人国产精品色哟哟 | 情侣av| 亚洲最新在线视频 | 日日骚视频 | 午夜欧美一区二区三区在线播放 | 国产日韩精品久久 | 久久最新| 久久久久久久国产 | 欧美日韩1区2区 | 欧美激情精品久久久久 | 在线欧美一区 | 操操日 | 国产激情99| 中文字幕综合 | 成人一区二区三区在线观看 | 欧美色图另类 | 第一区在线观看免费国语入口 | 成人av电影天堂 | 日韩视频精品 | 少妇精品亚洲一区二区成人 |