我很难找到一个很好的基本示例,说明如何使用元素树在python中解析XML。据我所知,这似乎是用于解析XML的最简单的库。这是我正在使用的XML的示例:
<timeSeriesResponse>
<queryInfo>
<locationParam>01474500</locationParam>
<variableParam>99988</variableParam>
<timeParam>
<beginDateTime>2009-09-24T15:15:55.271</beginDateTime>
<endDateTime>2009-11-23T15:15:55.271</endDateTime>
</timeParam>
</queryInfo>
<timeSeries name="NWIS Time Series Instantaneous Values">
<values count="2876">
<value dateTime="2009-09-24T15:30:00.000-04:00" qualifiers="P">550</value>
<value dateTime="2009-09-24T16:00:00.000-04:00" qualifiers="P">419</value>
<value dateTime="2009-09-24T16:30:00.000-04:00" qualifiers="P">370</value>
.....
</values>
</timeSeries>
</timeSeriesResponse>
我可以使用硬编码的方法来做我需要的事情。但是我需要我的代码更具动态性。这是起作用的:
tree = ET.parse(sample.xml)
doc = tree.getroot()
timeseries = doc[1]
values = timeseries[2]
print child.attrib['dateTime'], child.text
#prints 2009-09-24T15:30:00.000-04:00, 550
这是我尝试过的几件事,但都没有奏效,报告他们找不到timeSeries(或我尝试过的其他任何东西):
tree = ET.parse(sample.xml)
tree.find('timeSeries')
tree = ET.parse(sample.xml)
doc = tree.getroot()
doc.find('timeSeries')
基本上,我想加载xml文件,搜索timeSeries标签,并遍历value标签,返回dateTime和标签本身的值;上面示例中我正在执行的所有操作,但不对我感兴趣的xml部分进行硬编码。有人可以给我指出一些示例,或者给我一些有关如何完成此操作的建议吗?
感谢您的所有帮助。使用以下两个建议对我提供的示例文件起作用,但是,它们对整个文件不起作用。这是我使用Ed Carrel的方法时从真实文件中得到的错误:
(<type 'exceptions.AttributeError'>, AttributeError("'NoneType' object has no attribute 'attrib'",), <traceback object at 0x011EFB70>)
我发现实际文件中有不想要的东西,所以我逐步删除了一些东西,直到它起作用为止。这是我更改的行:
originally: <timeSeriesResponse xsi:schemaLocation="a URL I removed" xmlns="a URL I removed" xmlns:xsi="a URL I removed">
changed to: <timeSeriesResponse>
originally: <sourceInfo xsi:type="SiteInfoType">
changed to: <sourceInfo>
originally: <geogLocation xsi:type="LatLonPointType" srs="EPSG:4326">
changed to: <geogLocation>
删除具有“ xsi:…”的属性可解决此问题。’xsi:…’是无效的XML吗?对于我而言,以编程方式将其删除非常困难。有建议的解决方法吗?
这是完整的XML文件:http :
//www.sendspace.com/file/lofcpt
当我最初问这个问题时,我没有意识到XML中的名称空间。现在我知道发生了什么,我不必删除“
xsi”属性,它们是名称空间声明。我只是将它们包括在我的xpath搜索中。请参阅此页面上的LXML命名空间的更多信息。
因此,我现在在盒子上安装了ElementTree 1.2.6,并针对您发布的XML块运行了以下代码:
import elementtree.ElementTree as ET
tree = ET.parse("test.xml")
doc = tree.getroot()
thingy = doc.find('timeSeries')
print thingy.attrib
并得到以下回报:
{'name': 'NWIS Time Series Instantaneous Values'}
似乎已经找到了timeSeries元素,而无需使用数字索引。
现在有用的是知道您说“不起作用”时的意思。由于在给定相同输入的情况下对我有效,因此ElementTree不太可能以某种明显的方式损坏。使用任何错误消息,回溯或任何可提供的帮助我们的帮助来更新您的问题。
本文向大家介绍Python中使用ElementTree解析XML示例,包括了Python中使用ElementTree解析XML示例的使用技巧和注意事项,需要的朋友参考一下 【XML基本概念介绍】 XML 指可扩展标记语言(eXtensible Markup Language)。 XML 被设计用来传输和存储数据。 概念一: 概念二: 概念三: 概念四: 概念五: 概念六: 【XML几种解析方法】
问题内容: 当前使用Python 2.4.3,并且不允许升级 我想更改一个或多个标记中给定属性的值,以及更新文件中的XML注释。 我设法创建了一个以XML文件作为参数的Python脚本,并且为每个指定的标签更改了一个属性,如下所示 一切都很好,属性“ initialState”已更新,除了我的原始XML也包含许多XML注释的事实,但它们早已消失了,这是不好的。 怀疑只能解析XML结构,但我认为XM
问题内容: 我有以下要使用Python解析的: 我想找到所有标签,然后提取其中所有实例的值。我正在使用以下代码: 由于命名空间的原因,出现以下错误。 请让我知道如何更改代码以查找所有标签。 问题答案: ElementTree对名称空间不太聪明。你需要给的.find(),findall()和iterfind()方法的明确的命名空间字典。这没有很好的记录: 前缀仅在你传入的参数中查找。这意味着你可以使
本文向大家介绍Python greenlet和gevent使用代码示例解析,包括了Python greenlet和gevent使用代码示例解析的使用技巧和注意事项,需要的朋友参考一下 greenlet示例 greenlet微线程,允许在线程中手动切换 示例1,线程切换 gr1和gr2是两个greenlet线程,使用gr1.switch(..)启动gr1,gr1执行test1,切换到gr2,gr2执
问题内容: 我的XML文件如下所示: 我要做的就是提取ListPrice。 这是我正在使用的代码: 绝对没有输出。我也试过 没有不同。 我究竟做错了什么? 问题答案: 您有2个问题。 1)仅包含根元素,而不包含整个文档。它是Element类型而不是ElementTree类型。 2)如果将命名空间保留在XML中,则搜索字符串需要使用命名空间。 要解决问题1: 您需要更改: 至: 要解决问题2: 您可
问题内容: 我一直在使用django和elementtree开发应用程序,并将其部署到生产服务器时发现它正在运行python 2.4。我已经能够捆绑elementtree但现在我得到了错误: 不幸的是,我无法升级python,因此即时通讯卡住了我得到的内容。如何使用SimpleXMLTreeBuilder作为解析器和/或需要重写代码? 问题答案: 如果你有想要使用ElementTree的第三方模块