【发布时间】:2017-03-31 01:40:50
【问题描述】:
我的Python 脚本使用BeautifulSoup 在尝试从本地加载的文件中解析(从XML 中查找元素)时得到None:
xmlData = None
with open('conf//test2.xml', 'r') as xmlFile:
xmlData = xmlFile.read()
# this creates a soup object out of xmlData,
# which is properly loaded from file above
xmlSoup = BeautifulSoup(xmlData, "html.parser")
# this resolves to None
subElemX = xmlSoup.root.singleelement.find('subElementX', recursive=False)
文件:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<root>
<singleElement>
<subElementX>XYZ</subElementX>
</singleElement>
<repeatingElement id="1"/>
<repeatingElement id="2"/>
</root>
我还有一个 REST GET 服务,它返回相同的 XML,但是当我使用 requests.get 读取它时,它被解析得很好:
resp = requests.get(serviceURL, headers=headers)
respXML = resp.content.decode("utf-8")
restSoup = BeautifulSoup(respXML, "html.parser")
为什么它适用于 REST 响应,而不适用于从本地文件中读取的数据?
更新:虽然我知道 python 区分大小写且单个element !=singleElement,但在解析时会忽略大小写网络服务。
【问题讨论】:
-
打印
xmlData和respXML并比较你得到的结果。 -
singleelement != singleElement -
有趣,它与 REST 服务一起工作
标签: python xml beautifulsoup