我有多个要解析的XML文档,它们都具有相同的元素名称,但每个文档都有自己独特的命名空间。
如何自行提取命名空间,因此我可以将其作为我的" findall"的前缀。环
例如,这是一个XML文件...
<ColorCorrectionCollection xmlns="urn:ASC:CDL:v1.2">
<ColorCorrection id="af/af-123/neutral">
<SOPNode>
<Slope>2 1 1</Slope>
<Offset>0 0 0</Offset>
<Power>1 1 1</Power>
</SOPNode>
<SATNode>
<Saturation>1</Saturation>
</SATNode>
</ColorCorrection>
<ColorCorrection id="af/af-123/beauty">
<SOPNode>
<Slope>1.5 1.2 0.9</Slope>
<Offset>0 0 0</Offset>
<Power>1 1 1</Power>
</SOPNode>
<SATNode>
<Saturation>0.8</Saturation>
</SATNode>
</ColorCorrection>
以下是启动示例代码...
import xml.etree.ElementTree as ET
tree = ET.parse(file)
root = tree.getroot()
for elem in root.findall("ColorCorrection"):
# the above won't find anything,
# as I need specify "{urn:ASC:CDL:v1.2}" as prefix.
# how can I GET "{urn:ASC:CDL:v1.2}" into a variable?
答案 0 :(得分:1)
我不知道你真正想做什么,但我想:
xmlns
中提取root
值。 root.tag
包含类似'{urn:ASC:CDL:v1.2}ColorCorrectionCollection'
的字符串以及如何使用以下代码?
root.tag[:root.tag.find('}') + 1]
# => '{urn:ASC:CDL:v1.2}'