我是第一次XPath
用户,需要能够获取这些不同元素的文本值..例如time
,title
等。我正在使用Python中的libxml2
模块到目前为止还没有太多运气获得我需要的文本的值。这里的代码只返回元素标签..我需要值..任何帮助都会非常感激!
我正在使用此代码:
doc = libxml2.parseDoc(xmlOutput)
result = doc.xpathEval('//*')
使用以下文件:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE SCAN_LIST_OUTPUT SYSTEM "https://qualysapi.qualys.com/api/2.0/fo/sca/scan_list_output.dtd">
<SCAN_LIST_OUTPUT>
<RESPONSE>
<DATETIME>2012-01-22T01:21:53Z</DATETIME>
<SCAN_LIST>
<SCAN>
<REF>scan/2343423</REF>
<TYPE>Scheduled</TYPE>
<TITLE><![CDATA[customer 1 5/20/2012]]></TITLE>
<USER_LOGIN>user1</USER_LOGIN>
<LAUNCH_DATETIME>2012-02-21T04:11:05Z</LAUNCH_DATETIME>
<STATUS>
<STATE>Finished</STATE>
</STATUS>
<TARGET><![CDATA[13.3.3.2, 13.8.8.10, 13.10.12.60, 13.10.12.11...]]></TARGET>
</SCAN>
</SCAN_LIST>
</RESPONSE>
</SCAN_LIST_OUTPUT>
答案 0 :(得分:5)
您可以在每个返回的getContent()
对象上调用xmlNode
来检索关联的文本。请注意,这是递归的 - 要非递归地访问libxml2中的文本内容,您需要检索元素下的关联文本节点,并在 上调用.getContent()
。
也就是说,如果您使用lxml.etree
(更高级别的Python API,仍然支持C libxml2库)而不是Python libxml2,这会更容易;在这种情况下,它只是element.text
以字符串形式访问相关内容。
答案 1 :(得分:1)
看看Mark Pilgrim的潜入Python 3 ,Chapter 12. XML
本章从简短的XML课程开始(一般性的谈话,但是使用Atom Syndication Feed示例),然后继续使用标准xml.etree.ElementTree
并继续使用第三方lxml实现更多interface(完整的XPATH 1.0,基于libxml2)。