2

我是第一次使用的XPath用户,需要能够获取这些不同元素的文本值。例如timetitle等。我libxml2在 Python 中使用该模块,到目前为止,只获得我需要的文字。下面的代码只返回元素标签..我需要值..任何帮助将不胜感激!

我正在使用这段代码:

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>
4

2 回答 2

5

您可以调用getContent()每个返回xmlNode的对象来检索关联的文本。请注意,这是递归的——要以非递归方式访问 libxml2 中的文本内容,您需要检索元素下的关联文本节点,然后调用.getContent().

也就是说,如果您使用lxml.etree(更高级别的 Python API,仍然支持 C libxml2 库)而不是 Python libxml2,这会更容易;在这种情况下,只需element.text将相关内容作为字符串进行访问。

于 2012-05-22T01:59:22.430 回答
1

看看 Mark Pilgrim 的Dive Into Python 3第 12 章。XML

本章从 XML 的短期课程开始(一般性讨论,但使用 Atom Syndication Feed 示例),然后继续介绍标准xml.etree.ElementTree并继续介绍使用相同接口实现更多功能的第三方lxml(完整的 XPATH 1.0,基于 libxml2)。

于 2012-05-23T07:59:42.650 回答