如何使用另一个标签属性映射 XML 标签?
How to map an XML tag by using another tag attribute?
我想映射 XML 的标签。我想用一个字符串来映射那个标签。我试过了,只有过滤器直接写它才能映射,我不能用变量作为字符串来映射它。
如果我这样使用,它会return为空:
variablecode = "10.010"
ReadXML = ET.parse(XMLFile)
for drv in ReadXML.findall('.//desc[@code="variablecode"]/'):
descname = drv.get('name')
print(descname)
但是如果我这样使用它 return 名字:
variablecode = "10.010"
ReadXML = ET.parse(XMLFile)
for drv in ReadXML.findall('.//desc[@code="10.010"]/'):
descname = drv.get('name')
print(descname)
这是我的 XML 文件:
<Data>
<family no="1309" description="date">
<desc name="rt1" code="10.010" />
<disk name="xsfdf" ver="9.11" />
<disk name="jhgjt" ver="sryj" />
</desc>
<desc name="rt2" code="10.9" />
<disk name="kury" ver="45.11" />
<disk name="jyd" ver="liud" />
</desc>
</family>
<family no="2006" description="date">
<desc name="rt3" code="16450.010" />
<disk name="ytdts" ver="9.11" />
<disk name="sj" ver="8346" />
</desc>
<desc name="rt5" code="165460.9" />
<disk name="kgd" ver="65.11" />
<disk name="asdr" ver="97.986" />
</desc>
</family>
</Data>
但是我的期望我不想直接写代码,我需要使用变量,因为代码的值是由另一个进程定义的,所以我需要在变量中使用它。
很有可能你这样传的时候
for drv in ReadXML.findall('.//desc[@code="variablecode"]/'):
它可能不是指变量的值,而是仅指字符串 variablecode
,它当然不存在于您的 .xml
文件中,因此 returns 为空.
你能试试这样的吗?
for drv in ReadXML.findall('.//desc[@code="{}"]/'.format(variablecode)):
我想映射 XML 的标签。我想用一个字符串来映射那个标签。我试过了,只有过滤器直接写它才能映射,我不能用变量作为字符串来映射它。
如果我这样使用,它会return为空:
variablecode = "10.010"
ReadXML = ET.parse(XMLFile)
for drv in ReadXML.findall('.//desc[@code="variablecode"]/'):
descname = drv.get('name')
print(descname)
但是如果我这样使用它 return 名字:
variablecode = "10.010"
ReadXML = ET.parse(XMLFile)
for drv in ReadXML.findall('.//desc[@code="10.010"]/'):
descname = drv.get('name')
print(descname)
这是我的 XML 文件:
<Data>
<family no="1309" description="date">
<desc name="rt1" code="10.010" />
<disk name="xsfdf" ver="9.11" />
<disk name="jhgjt" ver="sryj" />
</desc>
<desc name="rt2" code="10.9" />
<disk name="kury" ver="45.11" />
<disk name="jyd" ver="liud" />
</desc>
</family>
<family no="2006" description="date">
<desc name="rt3" code="16450.010" />
<disk name="ytdts" ver="9.11" />
<disk name="sj" ver="8346" />
</desc>
<desc name="rt5" code="165460.9" />
<disk name="kgd" ver="65.11" />
<disk name="asdr" ver="97.986" />
</desc>
</family>
</Data>
但是我的期望我不想直接写代码,我需要使用变量,因为代码的值是由另一个进程定义的,所以我需要在变量中使用它。
很有可能你这样传的时候
for drv in ReadXML.findall('.//desc[@code="variablecode"]/'):
它可能不是指变量的值,而是仅指字符串 variablecode
,它当然不存在于您的 .xml
文件中,因此 returns 为空.
你能试试这样的吗?
for drv in ReadXML.findall('.//desc[@code="{}"]/'.format(variablecode)):