いくつかのXMLを解析しようとしていますが、いくつかのエスケープ文字が含まれています。これを行う簡単な方法はありますか?Python - エスケープされた角かっこでxmlを解析する
のxml:
<?xml version="1.0" encoding="UTF-8"?>
<Group id="RHEL-07-010010">
<title>SRG-OS-000257-GPOS-00098</title>
<description><GroupDescription></GroupDescription> </description>
<Rule id="RHEL-07-010010_rule" severity="high" weight="10.0">
<version>RHEL-07-010010</version>
<title>The file permissions, ownership, and group membership of system files and commands must match the vendor values.</title>
<description><VulnDiscussion>Discretionary access control is weakened if a user or group has access permissions to system files and directories greater than the default.
Satisfies: SRG-OS-000257-GPOS-00098, SRG-OS-000278 GPOS-00108</VulnDiscussion>
</Rule>
</Group>
私は、descriptionタグに含まれるグループID、ルールの重要度、タイトルとVulnDiscussionを引き出すしようとしています。
import xml.etree.ElementTree as ET
import HTMLParser
tree = ET.parse("test.xml")
root = tree.getroot()
for findings in root.iter('Group'):
print findings.get('id')
rule = findings.find('Rule')
print rule.get('severity')
print rule.find('title').text
description = rule.find('description')
# my attempt at unescaping the description tag to parse the VulnDiscussion
embeddedHtml = HTMLParser.HTMLParser()
unescapedXML = embeddedHtml.unescape(description)
newtree = ET.fromstring(unescapedXML)
print newtree.get(VulnDiscussion).text
クラッシュして:私はそれはエスケープ文字が含まれているため、ここで>と<
は私のコードがあるVulnDiscussion以外のすべてを取得することができます
newtree = ET.fromstring(unescapedXML)
File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions /2.7/lib/python2.7/xml/etree/ElementTree.py", line 1300, in XML
parser.feed(text)
File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/xml/etree/ElementTree.py", line 1640, in feed
self._parser.Parse(data, 0)
TypeError: must be string or read-only buffer, not Element
を生成し、私はあなたの質問を解決する投稿の答えをしたか、別の何かを探していましたか? –