lxmlを使ってBeautifulSoupを使ってXMLファイルを解析してナビゲートします。BeautifulSoupはlxml解析エラーを抑制しますか?
私は奇妙な動作に気付きました。 Beautifulsoupは、不正な形式のXMLファイルを読み込むときにlxmlパーサーによってスローされる例外を抑制します(例えば切り捨てられた文書や欠落する終了タグなど)。
例:それは(見つける)と、そのような壊れたXMLツリーをナビゲートすることも可能にコールするよ
from bs4 import BeautifulSoup
soup = BeautifulSoup("<foo><bar>trololo<", "xml") # this will work
...
はのは、純粋なlxmlのとまったく同じ不正な文書を読んでみましょう:
from lxml import etree
root = etree.fromstring("<foo><bar>trololo<") # will throw XMLSyntaxError
なぜですか?私はBeautifulSoup自体が何の解析もしていないことを知っています。それはlxml(または他のパーサ)のラッパーライブラリです。しかし、XMLが不正な形式であると、実際にエラーが発生することに興味があります。終了タグがありません。私はちょうど基本的なXML構文検証(XSDスキーマの検証に興味がない)が欲しい。