我有下一个类型的 XML:
<OUTPUT>
<HEADER>
</HEADER>
<REGISTER>
<RESULT>0</RESULT>
<KEY1>CAR</KEY1>
<KEY2>RED</KEY2>
<KEY3>2013</KEY3>
<ATTRIBUTE1>2000</ATTRIBUTE1>
<ATTRIBUTE2>100000</ATTRIBUTE2>
</REGISTER>
<REGISTER>
<RESULT>0</RESULT>
<KEY1>TRUCK</KEY1>
<KEY2>BLUE</KEY2>
<KEY3>2014</KEY3>
<ATTRIBUTE1>3000</ATTRIBUTE1>
<ATTRIBUTE2>400000</ATTRIBUTE2>
</REGISTER>
<OUTPUT>
如果 KEY1、KEY2、KEY3 有一些值而不在 python 中循环,我如何搜索 ATTRIBUTE1 的值? (某种c#的lambda表达式)
感谢@CommuSoft,我知道我可以使用带有 libxml2 的 Xpath 查询。但是当我尝试使用 pip install libxml2-python 安装它时,我发现了错误
Could not find any downloads that satisfy the requirement libxml2-python
另外我忘了说我在 anaconda 和 windows 上使用 python 2.7。
请您参考如下方法:
一般来说,最好使用库来处理 XML,在这种情况下,特别是使用 XPath query。 .
import libxml2
doc = libxml2.parseFile("tst.xml")
ctxt = doc.xpathNewContext()
res = ctxt.xpathEval("//REGISTER/ATTRIBUTE1[../KEY1/text()='TRUCK' and ../KEY2/text()='BLUE' and ../KEY3/text()='2014']")
doc.freeDoc()
ctxt.xpathFreeContext()
这里的查询是:
//REGISTER/ATTRIBUTE1[../KEY1/text()='TRUCK' and ../KEY2/text()='BLUE' and ../KEY3/text()='2014']
结果存储在res中。
