xmlpython
A. python xml 查找關鍵字
可以這么寫:
def find(html):
soup = BeautifulSoup(html.getResponse().content,from_encoding='gb18030')
for index in soup.find_all('ROWDATA'):
print index
html是你的網頁域名
B. 如何用Python輸出漂亮的xml文件
你的問題可以直接轉化為python如何讀取文件,使用這句代碼:open('thefile.xml').read( ) 下面是例子: >>> open('D:\\Test.xml',encoding='utf8').read()不知道為什麼,python3.4中讀取文件的默認使用GBK,這一點要注意
C. 如何用python提取XML中的注釋
from xml.etree import ElementTreestr_ = '' #文件中的xml字元串xml_obj = ElementTree.fromstring(str_)
然後通過對xml_obj進行操作,xml_obj本身也是一個xml節點。
xml_obj.getchildren() 獲取根節點的子節點列表
xml_obj.findall(node_name) 搜索xml_obj節點下名為node_name的所有節點
xml_obj.tag 節點的標簽
xml_obj.text 節點的文本信息 ,本例中可以獲得K這個文本。
xml_obj.tail 節點尾部的文本信息,本例中獲取Channel Regulator KCR1 Suppresses Heart Rhythm by Molating the Pacemaker Current I 就需要搜索到標簽為sup的節點,然後取節點的tail文本獲得。
D. python這樣的xml配置文件如何讀取
xml='''<?xmlversion="1.0"encoding="utf-8"?>
<Conf>
<DBconf>
<DB>
<Desc>abc</Desc>
<ConnStr>DB_192.168.3.1</ConnStr>
<UserName>system</UserName>
<PassWd>aa</PassWd>
</DB>
<DB>
<Desc>bb</Desc>
<ConnStr>ORA9i_192.168.3.1</ConnStr>
<UserName>system</UserName>
<PassWd>system</PassWd>
</DB>
<DB>
<Desc>ddd</Desc>
<ConnStr>ORA9i_192.168.3.1</ConnStr>
<UserName>system</UserName>
<PassWd>system</PassWd>
</DB>
</DBconf>
<Otherconf>
<a>aaa</a>
<c>aaa</c>
</Otherconf>
</Conf>
'''
fromxml.domimportminidom
defget_childern(node):
returnfilter(lambdan:isinstance(n,minidom.Element),node.childNodes)
doc=minidom.parseString(xml)
root=doc.childNodes[0]
DBconf,Otherconf=get_childern(root)
forDBinget_childern(DBconf):
forninget_childern(DB):
printn.tagName,n.firstChild.data
forninget_childern(Otherconf):
printn.tagName,n.firstChild.data
E. python 解析xml需要什麼模塊
Python的標准庫中,提供了6種可以用於處理XML的包。
(1)xml.dom
xml.dom實現的是W3C制定的DOM API。如果你習慣於使用DOM API或者有人要求這這樣做,可以使用這個包。不過要注意,在這個包中,還提供了幾個不同的模塊,各自的性能有所區別。
DOM解析器在任何處理開始之前,必須把基於XML文件生成的樹狀數據放在內存,所以DOM解析器的內存使用量完全根據輸入資料的大小。
(2)xml.dom.minidom
xml.dom.minidom是DOM API的極簡化實現,比完整版的DOM要簡單的多,而且這個包也小的多。那些不熟悉DOM的朋友,應該考慮使用xml.etree.ElementTree模塊。據lxml的作者評價,這個模塊使用起來並不方便,效率也不高,而且還容易出現問題。
相關推薦:《Python教程》
(3)xml.dom.pulldom
與其他模塊不同,xml.dom.pulldom模塊提供的是一個「pull解析器」,其背後的基本概念指的是從XML流中pull事件,然後進行處理。雖然與SAX一樣採用事件驅動模型(event-driven processing model),但是不同的是,使用pull解析器時,使用者需要明確地從XML流中pull事件,並對這些事件遍歷處理,直到處理完成或者出現錯誤。
pull解析(pull parsing)是近來興起的一種XML處理趨勢。此前諸如SAX和DOM這些流行的XML解析框架,都是push-based,也就是說對解析工作的控制權,掌握在解析器的手中。
(4)xml.sax
xml.sax模塊實現的是SAX API,這個模塊犧牲了便捷性來換取速度和內存佔用。SAX是Simple API for XML的縮寫,它並不是由W3C官方所提出的標准。它是事件驅動的,並不需要一次性讀入整個文檔,而文檔的讀入過程也就是SAX的解析過程。所謂事件驅動,是指一種基於回調(callback)機制的程序運行方法。
(5)xml.parser.expat
xml.parser.expat提供了對C語言編寫的expat解析器的一個直接的、底層API介面。expat介面與SAX類似,也是基於事件回調機制,但是這個介面並不是標准化的,只適用於expat庫。
expat是一個面向流的解析器。您注冊的解析器回調(或handler)功能,然後開始搜索它的文檔。當解析器識別該文件的指定的位置,它會調用該部分相應的處理程序(如果您已經注冊的一個)。該文件被輸送到解析器,會被分割成多個片斷,並分段裝到內存中。因此expat可以解析那些巨大的文件。
(6)xml.etree.ElementTree(以下簡稱ET)
xml.etree.ElementTree模塊提供了一個輕量級、Pythonic的API,同時還有一個高效的C語言實現,即xml.etree.cElementTree。與DOM相比,ET的速度更快,API使用更直接、方便。與SAX相比,ET.iterparse函數同樣提供了按需解析的功能,不會一次性在內存中讀入整個文檔。ET的性能與SAX模塊大致相仿,但是它的API更加高層次,用戶使用起來更加便捷。
建議:在使用Python進行XML解析時,首選使用ET模塊,除非你有其他特別的需求,可能需要另外的模塊來滿足。
F. 用python讀取xml<></>之間的內容並修改
python是有相關的解析html格式的模塊的
可以識別出標簽,簡單的處理文件你可以用Beautiful Soup模塊,想做大一些的爬蟲可以使用scrapy框架的xpath語法來鎖定標簽。
這里引用下官方說明:
Beautiful Soup提供一些簡單的、python式的函數用來處理導航、搜索、修改分析樹等功能。它是一個工具箱,通過解析文檔為用戶提供需要抓取的數據,因為簡單,所以不需要多少代碼就可以寫出一個完整的應用程序。
Beautiful Soup自動將輸入文檔轉換為Unicode編碼,輸出文檔轉換為utf-8編碼。你不需要考慮編碼方式,除非文檔沒有指定一個編碼方式,這時,Beautiful Soup就不能自動識別編碼方式了。然後,你僅僅需要說明一下原始編碼方式就可以了。
Beautiful Soup已成為和lxml、html6lib一樣出色的python解釋器,為用戶靈活地提供不同的解析策略或強勁的速度。
因此可以很方便地提取出HTML或XML標簽中的內容
給你個樣例:
frombs4importBeautifulSoup
importurllib2
html=urllib2.urlopen(url).read()#這里是直接爬取一個網址了,html變數也可以是一個本地的文件
content=BeautifulSoup(html).findAll('a')#使用這句就可以提取出文件中所有的<a></a>中的內容
"""模塊還支持很多路徑索引修改相關的功能,總之功能是比較強大的"""
希望我的回答可以幫到你:-)
G. python 如何把xml文件轉化成string
你說的不是xml文件吧,是xml對象轉化成string吧。
你可以使用toxml()這個方法。
Node.toxml([encoding])
"""
.
Withnoargument,,andtheresultis
document.-8islikely
incorrect,sinceUTF-8isthedefaultencodingofXML.
Withanexplicitencoding[1]argument,theresultisabytestringinthe
specifiedencoding..To
,the
「utf-8」.
Changedinversion2.3:;seewritexml().
"""
如果解決了您的問題請採納!
如果未解決請繼續追問
H. python讀取xml文件有哪些方法
引入XML組件:import xml.dom.minidom。
創建一個xml文件,<?xml version="1.0" encoding="utf-8"?>。
相關推薦:《Python教程》
載入讀取XML文件,xml.dom.minidom.parse('abc.xml'),這是xml文件的對象。
獲取XML文檔對象,root = dom.documentElement。
獲取標簽之間的數據 ,rootdata.getElementsByTagName('caption')。
總結一下xml對象,node.getAttribute(AttributeName),獲取XML節點屬性值,node.getElementsByTagName(TagName),獲取XML節點對象集合,等等具體的查看手冊。
I. Python 怎麼解析 xml字元串
1. 我上面這段xml代碼,一開始沒有注意看,在每一個元素的結尾元素中都含有轉義符,這就是為什麼我用xml解析插件時一直保報錯的原因,因為他不是正規的xml格式。我的方法是用正則替換掉:re.sub(r'(<)\\(/.+?>)',r'\g<1>\g<2>',f_xml) 對於Python中的正則re的sub用法
2. 處理成正規的xml格式後,我這里還是用ElementTree來解析的,但在載入時又報錯:
cElementTree.ParseError: XML or text declaration not at start of entity: line 2, column 0
這個錯誤我在網上沒有找到合適的答案,不過根據字面意思來解決,就是在開頭的地方有錯誤。這里我嘗試這吧xml的文檔聲明給去掉了,居然沒有報錯。這里有些不理解為什麼不能加? 我的方法:f_xml=test_xml.replace('<?xml version="1.0" encoding="gbk"?>','')
3. 然後再載入,就能獲取到相應的節點了。