【发布时间】:2018-01-15 04:53:41
【问题描述】:
我在 XML 文件中有新旧命名空间。当我运行这项工作时,它只适用于两者之一,但我希望能够同时处理这两种情况。
这是我的旧 XML 的示例:
<element1 xmlns="http:/ss/dd">
<element2 xmlns="http:/uu/ee/rr">
<element3>value1</element3>
<element4>value2</element4>
</element2>
</element1>
这是我的新 XML 的一个示例:
<element1 xmlns="http:/ss/dd/version1_0">
<element2 xmlns="http:/uu/ee/rr">
<element3>value1</element3>
<element4>value2</element4>
</element2>
</element1>
未来会这样
新的 XML:
<element1 xmlns="http:/ss/dd/version2_0">
<element2 xmlns="http:/uu/ee/rr">
<element3>value1</element3>
<element4>value2</element4>
</element2>
</element1>
我的代码是:
ele3 = getvalue(xml_content,'x:element1/y:element2/y:element3',
namespace{x:'http:/ss/dd',y:http:/uu/ee/rr})
我试过了,但没用:
ele3 = getvalue(xml_content,'x:element1/y:element2/y:element3',
namespace{x:'http:/ss/dd*',y:'http:/uu/ee/rr'})
my code is using the default xml parser :
def getvalue(xml_content, x_path, namespace):
data= etree.formstring(xml_content)
elements = data.xpath(x_path, namespaces = namespace)
if(len(elements) ==1):
value = elements[0].text
if(value == None):
value ="Unknown"
return value
else:
return "Unknown"
我的代码适用于旧版本,但我想让它也适用于所有未来版本。我该怎么做?
【问题讨论】:
-
这与 XSLT 有什么关系?请显示更完整的代码而不是行 sn-ps,包括
import行。 -
我找到了解决这个问题的方法,感谢您帮助我......
标签: python python-2.7 xpath xml-parsing