我正在创建一段代码,可以索引一个xml文件,找到值,如果我愿意的话,用另一个替换它。我现在只能使用lxml findall对我的名称空间进行索引
XML文件的格式如下:
<?xml version="1.0"?>
<DiagramSheetModel xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/Amtech.ProDesign.Components.Documents">
<Entities xmlns:a="http://schemas.datacontract.org/2004/07/Amtech.Common.Components.DiagramComponents">
<a:BaseEntity xmlns:b="http://schemas.datacontract.org/2004/07/Amtech.ProDesign.Components.DiagramComponents.Electrical" i:type="b:DistributionBoard">
<a:AttributePermissions xmlns:c="http://schemas.datacontract.org/2004/07/Amtech.Common.Components.Security" i:nil="true"/>
<a:UserColour xmlns:c="http://schemas.datacontract.org/2004/07/System.Windows.Media">
<c:A>0</c:A>
代码是:
ns = {"a":"{http://schemas.datacontract.org/2004/07/Amtech.Common.Components.DiagramComponents}",
"b":"{http://schemas.datacontract.org/2004/07/Amtech.Common.Components.DiagramComponents.Electrical}",
"c":"{http://schemas.datacontract.org/2004/07/Amtech.ProDesign.Components.DiagramComponents.NonElectrical}",
"dces":"{http://schemas.datacontract.org/2004/07/Amtech.ProDesign.Components.DiagramComponents.Electrical.Supply}",
"d":"http://schemas.datacontract.org/2004/07/System.Windows.Media"
}
root = lxml.objectify.fromstring(xml)
for e in root.Entities.getchildren():
if e.findall('.//AttributePermissions.//UserColour',ns):
for ItemName in e.findall('.//AttributePermissions.//UserColour',ns):
ItemName = ItemName.A
else:
ItemName = "N/A"
return ItemName
目前,它正在返回N/A(如果索引不存在,它应该显示的值)。我正在努力让它与各种名称空间一起工作-请有人建议
目前没有回答
相关问题 更多 >
编程相关推荐