2017-08-25 19 views
-1

から名前空間/属性?ストリップは、SOAP XML

私はこのしようとすると:

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文書からすべての属性を削除します。

答えて

0

XSIは名前空間です。必要に応じてクエリーでそれらを使用することができます。それらを削除すると、データの結果に悪影響を及ぼす可能性があります。同じ要素名(異なる名前空間)を持つ他のxml要素があるとします。

はここを見て: Python ElementTree module: How to ignore the namespace of XML files to locate matching element when using the method "find", "findall"

そう何をやっていることはハックのビットで、あなたにも文字列としてファイルを読み込み、質量正規表現を行う可能性がありますあなたがしたい名前空間の文字列に置き換えます削除する(推奨しない)。