私は現在、xmlファイルをロードし、次のようにxmlタグのペア内のテキストを変更しようとしています。
<anode>sometext</anode>
getText
私は現在、上記のテキストを取得するために使用するヘルパー関数を持っていますsometext
。次にchildnodes
、ノード内で、上記のXMLスニペットを持つノードを変更してにsometext
変更する必要がありますothertext
。一般的なAPIパッチgetText
関数を以下の脚注に示します。
だから私の質問は、それが私たちがテキストを取得する方法であり、どのように私はと呼ばれるコンパニオンヘルパー関数を書くのかということsetText(node,'newtext')
です。それがノードレベルで動作し、すべてそれ自体で子ノードに到達し、堅牢に機能することを望んでいます。
前の質問には、「 DOMを適切に変更できるかどうかわかりません」という回答が受け入れられています。それは本当に本当ですか?Minidomは非常に壊れているので、事実上読み取り専用ですか?
脚注として、との間のテキストを読むために<anode>
、</anode>
直接の単純な単一のミニダム関数が存在しないことに驚いた。この小さなヘルパー関数がPythonxmlチュートリアルで提案されている。
import xml.dom.minidom
def getText(nodelist):
rc = []
for node in nodelist:
if node.nodeType == node.TEXT_NODE:
rc.append(node.data)
return ''.join(rc)
# I've added this bit to make usage of the above clearer
def getTextFromNode(node):
return getText(node.childNodes)
StackOverflowの他の場所では、2008年からこの受け入れられた回答が表示されます。
node[0].firstChild.nodeValue
それがミニダムで読むのがどれほど難しいかというと、人々が「それをしないでください!」と言うのを見て私は驚かない。XMLドキュメントのノード構造を変更する可能性のあるものを書く方法を尋ねるとき。
更新以下の答えは、思ったほど難しくないことを示しています。