条属性/ SOAP从XML

问题描述:

命名空间。如果我有几个标签是这样的: <ServiceId xsi:type="xsd:string">aval</ServiceId>条属性/ SOAP从XML

xsi:type="xsd:string"技术上的属性?

当我试试这个:

from StringIO import StringIO 
from SOAPpy.wstools.Utility import DOM 
badxml = '''<?xml version="1.0" encoding="utf-8"?> 
     <ServiceId xsi:type="xsd:string">aval</ServiceId>''' 
document = DOM.loadDocument(StringIO(badxml)) 
orig_len = len(document.childNodes[0].toxml()) 
for node in document.childNodes: 
    node.removeAttribute('xsi:type') 
new_len = len(node.toxml()) 
diff = orig_len - new_len 
print diff 

...我得到一个错误:

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/usr/lib/python2.6/site-packages/SOAPpy/wstools/Utility.py", line 572, in loadDocument 
    return xml.dom.minidom.parse(data) 
    File "/usr/lib64/python2.6/site-packages/_xmlplus/dom/minidom.py", line 1915, in parse 
    return expatbuilder.parse(file) 
    File "/usr/lib64/python2.6/site-packages/_xmlplus/dom/expatbuilder.py", line 930, in parse 
    result = builder.parseFile(file) 
    File "/usr/lib64/python2.6/site-packages/_xmlplus/dom/expatbuilder.py", line 207, in parseFile 
    parser.Parse(buffer, 0) 
xml.parsers.expat.ExpatError: unbound prefix: line 2, column 9 

我基本上要删除大型XML文档的所有属性。

XSI是一个命名空间。如果需要它们,可以在查询中使用它们,删除它们可能会对数据结果产生不利影响,或者如果有其他xml元素具有相同的元素名称(但具有不同的名称空间)。

看看这里: Python ElementTree module: How to ignore the namespace of XML files to locate matching element when using the method "find", "findall"

否则你在做什么是一个黑客位的,你还不如读文件作为一个字符串,并做了大规模的正则表达式替换你想要的名称空间字符串删除(不推荐)。