国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

詳解Python中DOM方法的動態(tài)性

2020-02-23 00:38:31
字體:
供稿:網(wǎng)友

文檔對象模型

xml.dom 模塊對于 Python 程序員來說,可能是使用 XML 文檔時(shí)功能最強(qiáng)大的工具。不幸的是,XML-SIG 提供的文檔目前來說還比較少。W3C 語言無關(guān)的 DOM 規(guī)范填補(bǔ)了這方面的部分空白。但 Python 程序員最好有一個(gè)特定于 Python 語言的 DOM 的快速入門指南。本文旨在提供這樣一個(gè)指南。在 上一篇專欄文章 中,某些樣本中使用了樣本 quotations.dtd 文件,并且這些文件可以與本文中的代碼樣本檔案文件一起使用。

有必要了解 DOM 的確切含義。這方面,正式解釋非常好:

    “文檔對象模型”是平臺無關(guān)和語言無關(guān)的接口,它允許程序和腳本動態(tài)訪問和更新文檔的內(nèi)容、結(jié)構(gòu)和樣式。可以進(jìn)一步處理文檔,而處理的結(jié)果也可以合并到已顯示的頁面中。(萬維網(wǎng)聯(lián)盟 DOM 工作組)

DOM 將 XML 文檔轉(zhuǎn)換成樹 -- 或森林 -- 表示。萬維網(wǎng)聯(lián)盟 (W3C) 規(guī)范給出了一個(gè) HTML 表的 DOM 版本作為例子。

2015411151828304.gif (368×205)

如上圖所示,DOM 從一個(gè)更加抽象的角度定義了一組可以遍歷、修剪、改組、輸出和操作樹的方法,而這種方法要比 XML 文檔的線性表示更為便利。

將 HTML 轉(zhuǎn)換成 XML

有效的 HTML 幾乎就是有效的 XML,但又不完全相同。這里有兩個(gè)主要的差異,XML 標(biāo)記是區(qū)分大小寫的,并且所有 XML 標(biāo)記都需要一個(gè)顯式的結(jié)束符號(作為結(jié)束標(biāo)記,而這對于某些 HTML 標(biāo)記是可選的;例如: <img src="X.png" /> )。使用 xml.dom 的一個(gè)簡單示例就是使用 HtmlBuilder() 類將 HTML 轉(zhuǎn)換成 XML。
try_dom1.py

"""Convert a valid HTML document to XML  USAGE: python try_dom1.py < infile.html > outfile.xml"""        import         sys        from         xml.dom         import         core        from         xml.dom.html_builder         import         HtmlBuilder        # Construct an HtmlBuilder object and feed the data to itb = HtmlBuilder()b.feed(sys.stdin.read())        # Get the newly-constructed document objectdoc = b.document        # Output it as XML        print         doc.toxml()

HtmlBuilder() 類很容易實(shí)現(xiàn)它繼承的部分基本 xml.dom.builder 模板的功能,它的源碼值得研究。然而,即使我們自己實(shí)現(xiàn)了模板功能,DOM 程序的輪廓還是相似的。在一般情況下,我們將用一些方法構(gòu)建一個(gè) DOM 實(shí)例,然后對該實(shí)例進(jìn)行操作。DOM 實(shí)例的 .toxml() 方法是一種生成 DOM 實(shí)例的字符串表示的簡單方法(在以上的情況中,只要在生成后將它打印出來)。

將 Python 對象轉(zhuǎn)換成 XML

Python 程序員可以通過將任意 Python 對象導(dǎo)出為 XML 實(shí)例來實(shí)現(xiàn)相當(dāng)多的功能和通用性。這就允許我們以習(xí)慣的方式來處理 Python 對象,并且可以選擇最終是否使用實(shí)例屬性作為生成 XML 中的標(biāo)記。只需要幾行(從 building.py 示例派生出),我們就可以將 Python“原生”對象轉(zhuǎn)換成 DOM 對象,并對包含對象的那些屬性執(zhí)行遞歸處理。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 海伦市| 乌鲁木齐市| 自治县| 汽车| 普安县| 江西省| 兴国县| 永定县| 宁蒗| 留坝县| 光泽县| 县级市| 罗平县| 青神县| 通城县| 许昌市| 武平县| 达尔| 化州市| 金坛市| 阿克陶县| 科尔| 彰武县| 麟游县| 宣恩县| 江孜县| 上杭县| 铜山县| 陆川县| 康定县| 湘乡市| 渝中区| 衡阳市| 孟津县| 山西省| 广汉市| 土默特左旗| 阿坝| 乐至县| 建水县| 金坛市|