導航:首頁 > 編程語言 > pythonxml列印

pythonxml列印

發布時間:2023-08-23 23:11:17

Ⅰ 如何用python輸出漂亮的xml文件

最近要用Python處理一個xml文件。平時習慣了用xml.etree.ElementTree,結果發現此庫存在一些讓人無法忍受的缺點:
1. 無法處理comment和cdata
2. 輸出後的xml文件沒有換行,沒有縮進,十分難以閱讀

於是嘗試這用xml.dom.minidom,前兩個問題幾乎全部解決了。唯一讓人看著不爽的是minidom對於text的處理。比如,我期待的xml輸入如下:

[html] view plain
<pre name="code" class="html"><pre name="code" class="html"><root>
<host>192.168.0.1</host>
</root>

但是使用xml.dom.minidom.Document.writexml後,輸出的結果卻是這樣的:

[html] view plain
<root>
<host>
192.168.0.1
</host>
</root>

開始的時候,我考慮重寫Document.writexml函數,覺得太麻煩,有用牛刀殺雞之感。後來想想,其實自己的需求非常簡單,只是需要對Document的輸出結果做個二次處理即可。使用python的正則表達式庫就可以實現:

[python] view plain
def save_xml(self, file_name):
xml_str = self.m_dom.toprettyxml(indent=" ")
repl = lambda x: ">%s</" % x.group(1).strip() if len(x.group(1).strip()) != 0 else x.group(0)
pretty_str = re.sub(r'>\n\s*([^<]+)</', repl, xml_str)
open(file_name, 'w').write(pretty_str)

先將Document輸出到字元串,然後使用正則表達式將text中的空行去掉即可。
黑馬程序員的PYthon是國內最早開設的真正人工智慧課程。課程全面系統,緊跟時代潮流。

Ⅱ 怎麼用python獲取xml文件的所有節點。

假如我們有個xml文檔如下:example.xml
<?xml version="1.0" encoding="UTF-8"?>
<BIT>
<GeneralDescription>
<name>Matlab</name>
<DateTime>2008-09-10 23:16:48</DateTime>
</GeneralDescription>
<AMatrix>1,2,3;4,5,6;7,8,9</AMatrix>
</BIT>
首先,要解析xml文檔,需要導入一個模塊
>>> from xml.dom.minidom import parse
(1)然後載入一個xml文檔
>>> xmldoc = parse("J:/homeword/example.xml")
>>> print xmldoc.toxml()
<?xml version="1.0" ?>
<BIT>
<GeneralDescription>
<name>Matlab</name>
<DateTime>2008-09-10 23:16:48</DateTime>
</GeneralDescription>
<AMatrix>1,2,3;4,5,6;7,8,9</AMatrix>
</BIT>
>>>
上面是可以查看這個文檔的內容。
Toxml方法列印出了node風格的xml,如果節點是Document結果,則列印出整個xml文檔。否則只列印出本節點所屬內容。
(2)如何獲取子節點
>>> xmldoc.childNodes
[<DOM Element: BIT at 0x1223af8>]
>>>
每一個node都有一個childNodes的屬性,他是一個node對象的列表,注意的是,一個Document只有一個子節點,上例中就是BIT這個節點,它屬於Document節點。
因為是列表,所以也可以同用列表索引,xmldoc.childNodes[0]
>>> BIT_element = xmldoc.firstChild
>>> BIT_element
<DOM Element: BIT at 0x1223af8>
>>> print BIT_element.toxml()
<BIT>
<GeneralDescription>
<name>Matlab</name>
<DateTime>2008-09-10 23:16:48</DateTime>
</GeneralDescription>
<AMatrix>1,2,3;4,5,6;7,8,9</AMatrix>
</BIT>
>>>
(3)獲得某一個節點的文本
>>> BIT_element.childNodes
[<DOM Text node "
">, <DOM Element: GeneralDescription at 0x1223be8>, <DOM Text node "
">, <DOM Element: AMatrix at 0x1223e40>, <DOM Text node "
">]
>>>name = (BIT_element.childNodes[1]).childNodes[1]
>>> >>> name.childNodes[0].data
u'Matlab'
>>>

Ⅲ python參數如果是xml字元串,該怎麼寫

調用Python腳本時傳遞XML字元串作為參數可能會導致錯誤,因為某些特殊字元可能被操作系統或Python解釋器解釋為命令或代碼。為配備升了避免這個問題,可以將XML字元串作為滾枝一個文本文件傳遞,或者使用base64編碼將字元串編碼為非特殊字元。下面是兩種方法的示例。

方法一:將XML字元串保存到文件,並將文件名作為參數傳遞:

import sys

import xml.etree.ElementTree as ET

filename = sys.argv[1]

with open(filename, 'r') as file:

xml_string = file.read()

xml_root = ET.fromstring(xml_string)

import base64

xml_string = '<?xml version="1.0" encoding="UTF-8"?>...'

encoded_xml = base64.b64encode(xml_string.encode()).decode()

import sys

import base64

import xml.etree.ElementTree as ET

encoded_xml = sys.argv[1]

decoded_xml = base64.b64decode(encoded_xml.encode()).decode()

xml_root = ET.fromstring(decoded_xml)

閱讀全文

與pythonxml列印相關的資料

熱點內容
文電通pdfgold 瀏覽:853
上傳圖片的時候怎麼壓縮 瀏覽:31
千尋伺服器地址 瀏覽:812
ssh命令教程視頻 瀏覽:401
蘋果商店怎麼更新所有app 瀏覽:34
電影香港加密 瀏覽:595
壓縮機毛細管滴水 瀏覽:850
可視化編程網頁 瀏覽:389
工廠附近租房用什麼app 瀏覽:186
老闆改需求甩鍋程序員 瀏覽:657
樂貓app是什麼平台 瀏覽:922
方舟手游如何修改伺服器後台 瀏覽:815
程序員考試教程 瀏覽:219
文件名修改為文件夾的名字批處理 瀏覽:251
拍照程序員 瀏覽:827
wps怎麼把pdf轉jpg 瀏覽:217
自拍用什麼app做的藝術照 瀏覽:169
h3c無線配置命令 瀏覽:515
linux代碼閱讀工具 瀏覽:160
能夠畫出對稱圖形的是什麼app 瀏覽:424