以下是描述表单的XML文件的一部分:
<?xml version="1.0" encoding="utf-8"?>
<ArrayOfHouse>
<XmlForm>
<houseNum>1</houseNum>
<plan1>
<coord>
<X> 1.2 </X>
<Y> 2.1 </Y>
<Z> 3.0 </Z>
</coord>
<color>
<R> 255 </R>
<G> 0 </G>
<B> 0 </B>
</color>
</plan1>
<plan2>
<coord>
<X> 21.2 </X>
<Y> 22.1 </Y>
<Z> 31.0 </Z>
</coord>
<color>
<R> 255 </R>
<G> 0 </G>
<B> 0 </B>
</color>
</plan2>
</XmlForm>
<XmlForm>
<houseNum>2</houseNum>
<plan1>
<coord>
<X> 11.2 </X>
<Y> 12.1 </Y>
<Z> 13.0 </Z>
</coord>
<color>
<R> 255 </R>
<G> 255 </G>
<B> 0 </B>
</color>
</plan1>
<plan2>
<coord>
<X> 211.2 </X>
<Y> 212.1 </Y>
<Z> 311.0 </Z>
</coord>
<color>
<R> 255 </R>
<G> 0 </G>
<B> 255 </B>
</color>
</plan2>
</XmlForm>
</ArrayOfHouse>
这是我的代码,用于恢复房屋1和2的每个平面图的坐标,问题在这一行coord=tree.findall("XmlForm/[houseNum=str(houseindex)]
,使用houseindex.__str__()
时也会出现同样的问题
你不能把“houseindex”注入字符串。在houseindex的for循环中也要小心,因为当前使用的范围(0,2)对应于0和1。根据您的xml示例,您希望使用range(1,3)。在
我相信你想要这样的东西(为了提高可读性,我稍微重构了你的代码):
在构造XPath表达式之前,您显然希望用Python解释
str(houseindex)
。(您的错误消息告诉您str()
不是XPath函数。)因此,将
coord=tree.findall()
的参数从到
^{pr2}$对XPath还有两个修正:
/
上谓词之前的/
。在houseNum
的相等测试周围添加引号。在最后的XPath没有进一步的语法错误
以下XPath将所有三个修复组合在一起,没有进一步的语法错误:
相关问题 更多 >
编程相关推荐