一、parsefromstring函數是什麼
parsefromstring函數是Python中常用的用於解析xml或者html字符串的函數。該函數可以將字符串解析成ElementTree或Element對象,從而更方便的進行字符串的操作。
二、parsefromstring函數的參數說明
parsefromstring(string: str, parser=None) -> xml.etree.ElementTree.Element
parsefromstring函數有兩個參數,其中string參數是必選的,表示要解析的xml或者html字符串,parser是可選的,表示使用哪種解析器進行解析,默認使用系統自帶的解析器。
在實際應用中,需要注意的是,使用parsefromstring解析本地文件時,應該使用parse函數,如下所示:
import xml.etree.ElementTree as ET tree = ET.parse('example.xml') root = tree.getroot()
三、對字符串進行解析
小標題1:解析xml字符串
使用parsefromstring函數可以輕鬆的解析xml字符串。示例代碼如下:
import xml.etree.ElementTree as ET xml_str = '<person><name>John</name><age>30</age></person>' root = ET.fromstring(xml_str)
執行上述代碼後,將得到一個Element對象,可以方便的對xml進行操作。獲取節點內容的代碼如下:
name = root.find('name').text age = root.find('age').text
小標題2:解析html字符串
除了解析xml字符串,parsefromstring函數也可以解析html字符串。但需要注意的是,html字符串的解析需要使用html.parser解析器,如下所示:
import xml.etree.ElementTree as ET html_str = '<html><body><h1>Hello World</h1></body></html>' root = ET.fromstring(html_str, parser=ET.HTMLParser())
執行上述代碼後,同樣可以得到一個Element對象,可以方便的對html進行操作。獲取標題節點內容的代碼如下:
title = root.find('body/h1').text
四、解析帶有命名空間的xml字符串
在實際的開發中,會遇到帶有命名空間的xml字符串,需要對其進行解析。可以使用register_namespace函數來註冊命名空間,示例代碼如下:
import xml.etree.ElementTree as ET ns_map = {'xmlns:ns': 'http://www.example.com/namespace'} xml_str = '<ns:person><ns:name>John</ns:name><ns:age>30</ns:age></ns:person>' root = ET.fromstring(xml_str) ET.register_namespace('ns', ns_map['xmlns:ns']) name = root.find('ns:name', ns_map).text age = root.find('ns:age', ns_map).text
五、解析帶有CDATA的xml字符串
在xml中,有些特殊字符內容需要用到CDATA進行包含,parsefromstring函數也可以對其進行解析,示例代碼如下:
import xml.etree.ElementTree as ET xml_str = '<person><name><![CDATA[John]]></name><age>30</age></person>' root = ET.fromstring(xml_str) name = root.find('name').text
執行上述代碼後,可以得到一個正常的Element對象。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/240910.html