2016-07-07 6 views
1

ich das folgende unerwartete Verhalten mit den von Python 3.4 der verwendeten xml Parsern erlebt habe BeautifulSoup 4. Wenn ein XML-Stylesheet-Parsing, das Fragezeichen in dem Endbegrenzer verschwindet:XML-Parser entfernt Nähe Verarbeitungsanweisungstrennzeichen der Fragezeichen

Eingang:

BeautifulSoup('<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet href="myStyleSheet.xsl" type="text/xsl"?>','xml') 

Ausgang:

<?xml version="1.0" encoding="utf-8"?> 
<?xml-stylesheet href="myStyleSheet.xsl" type="text/xsl"> 

Beachten Sie, wie type="text/xsl"?> geändert type="text/xsl">.

Auch das Beispiel gefunden here bricht auf die gleiche Weise.

Ist das beabsichtigt? Soll ich einen Fehler melden? Gibt es eine Möglichkeit, dies zu verhindern, außer ein Fragezeichen an der richtigen Stelle hinterher einzufügen?

+0

Ich weiß nicht, was die BeautifulSoup-Spezifikation sagt, aber das Entfernen des Fragezeichens ist korrekt, wenn Sie HTML generieren, und falsch, wenn Sie XML generieren. –

+0

Der XML-Parser sollte speziell mit XML umgehen. Lustig ist, dass die HMTL-Parser, die ich ausprobiert habe ('html.parser' und' lxml') _don't_ das Fragezeichen entfernen. (Aber sie tun andere Dinge, die ich nicht will) – Swier

+0

xml.etree.ElementTree tut genau dasselbe wie lxml.etree –

Antwort

1

Aus dem Changelog für Version 4.5.0 von BeautifulSoup 2016.07.19 veröffentlicht:

"* Korrigierte Umgang mit XML-Verarbeitungsanweisungen [Bug = 1504393]"

Verwandte Themen