python - 如何使用 Python 处理 XML 标记数组以获取每个对象?
问题描述
我有一个这样的 XML 文件:
<?xml version="1.0" encoding="UTF-8"?>
<Country>
<number no="2008" info="update">
<string name="ruth" code="XX1" />
<string name="amy" code="XX2" />
<string name="lisa" code="XX3" />
<string name="graham" code="XX4" />
<!-- Working -->
<detail name="man1" class="A1">
<string name="ruth" code="1AV1"/>
<string name="amy" code="1AV2"/>
</detail>
<detail name="man2" class="A2">
<string name="lisa" code="2AV1"/>
<string name="graham" code="2AV2"/>
</detail>
</number>
<number no="2006" info="update">
<string name="grace" code="XX5" />
<string name="emy" code="XX6" />
<string name="toms" code="XX7" />
<!-- Working -->
<detail name="woman1" class="B1">
<string name="grace" />
</detail>
<detail name="woman2" class="B2">
<string name="emy" code="2BV1"/>
<string name="toms" />
</detail>
</number>
</Country>
我想通过映射名称大小来获取标签名称和代码的值。
这是我尝试过的,但没有完成并坚持下去。
ReadFile = ET.parse('test.xml')
codestring = 'B2'
nostring = '2008'
Name = ([nm.get("name")
for nm in ReadFile.findall('.//detail[@class="{}"]/'.format(codestring))])
Code = ([cd.get("code")
for cd in ReadFile.findall('.//detail[@class="{}"]/'.format(codestring))])
if len(Name) > 1 :
message = "Name More Than One"
if len(Code) < 1 :
message = "code not specified"
# I need to get the
# get one of the code from here <string name="toms" code="XX7" />
result = ["emy\2BV1" , "toms\XX7"] # this is my expected result. Im going to use each array to mapping a path in other process
elif len(Name) == 1 :
message = "Name Is One"
else:
message = "Name Not Found"
无论如何,我之前用powershell完成了这个过程。我是这样做的。
if (($DriverFileName).Count -gt 1)
{
$Message = "Name More Than One"
$maxLoop = [math]::Min($DriverFileName.Count, $DriverFileVersion.Count)
for ($i = 0; $i -lt $maxLoop; $i++) {
if (($DriverFileVersion[$i]).Count -lt 1)
{
$Message = "Version Not Specifiy"
$DriverFileNameDefault = $DriverFileName[$i]
$Default = (Select-Xml -Xml $ReadDriverXML -XPath "//family[@code='$DriverFamilyCode']/driver[@name='$DriverFileNameDefault']").Node.version
$Path = '{0}\{1}' -f $DriverFileName[$i], $Default
}
elseif (($DriverFileVersion[$i]).Count -ge 1)
{
$Message = "Version Specified"
$Path = '{0}\{1}' -f $DriverFileName[$i], $DriverFileVersion[$i]
}
else {
if (Test-Path $DriversPath\$DriverFileVersion[$i]\*)
{
$Message = "Version Can Not Query"
$Path = "$DriverFileName\*"
}
else {
$Message = "Version Unreachable"
}
}
$InfFile = Get-ChildItem -Path $DriversPath\$Path\*.inf
}
}
任何人都可以帮助我提供建议和帮助,非常感谢。太感谢了
解决方案
推荐阅读
- c - 使用 OpenMP 进行并行化
- javascript - React 中同时设置状态和调用补丁
- javascript - 使用 React Native 的平面列表
- c++ - 为什么我的代码没有被读取为 0 是有效响应?
- python - 如何在Python中生成长度为n的随机字节串
- javascript - 表单提交后反应js显示成功和错误消息
- web-scraping - 无法浏览此站点。如何使用针对此特定站点的请求进行抓取
- java - 如何从字符串中删除 /* 和 */ 之间的字符
- c# - 如何插入位置、比例和正交大小?
- python - 在 django 中找不到支持格式和 MIME 类型的视频