簡體   English   中英

使用 xml.etree.ElementTree 解析 XML 1.1 控制字符

[英]parse XML 1.1 control characters with xml.etree.ElementTree

在 Python 中,我正在解析包含控制字符的 XML:

import xml.etree.ElementTree as ET

tree = ET.fromstring('<?xml version="1.1" encoding="UTF-8"?><field>foo &#11; bar</field>')
print(tree.text)

XML 1.1 允許使用控制字符,但解析失敗。 有什么我遺漏的,還是 xml.etree.ElementTree 不支持這樣的控制字符?

至少 linux 上的 ElementTree 解析器使用系統的 expat 解析器。 libexpat 維護者不打算支持XML 1.1。

lxml package,它提供了與ElementTree類似的API,使用libxml2解析XML。 libxml2 維護者也不打算實現XML 1.1(這個參考很老,但 libxml2主頁只參考 1.0 標准。

你需要找到

  1. 實際實現 XML 1.1 的解析器
  2. 解析器的 Python 綁定。

@snakecharmerb 是對的。 推薦你一個更寬容的圖書館,也許你會喜歡它。

from simplified_scrapy import SimplifiedDoc,req,utils
html = '<?xml version="1.1" encoding="UTF-8"?><field>foo &#11; bar</field>'
doc = SimplifiedDoc(html)
print(doc.field.text)

結果:

foo &#11; bar

這里有更多例子。 https://github.com/yiyedata/simplified-scrapy-demo/blob/master/doc_examples

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM