10

私はxmlファイルを持っています - ここにスニペットがあります..

  <gmd_fileIdentifier>
    <gco_CharacterString>{0328cb65-b564-495a-b17e-e49e04864ab7}</gco_CharacterString>
 </gmd_fileIdentifier>
          <gmd_identifier>
            <gmd_RS_Identifier>
              <gmd_authority gco_nilReason="missing" />
              <gmd_code>
                <gco_CharacterString>0000</gco_CharacterString>
              </gmd_code>
              <gmd_codeSpace xmlns:gml="http://www.opengis.net/gml" xmlns:msxsl="urn:schemas-microsoft-com:xslt">
                  <gco_CharacterString>test</gco_CharacterString>
                </gmd_codeSpace>
            </gmd_RS_Identifier>
          </gmd_identifier>

やりたいことは、現在タグにある 0000 の値を gmd_fileIdentifier 文字列 {0328cb65-b564-495a-b17e-e49e04864ab7} に変更することです。

次の Python コードを使用して値にアクセスできますが、値を設定するにはどうすればよいですか? 現在のコード

import os, sys
from lxml import etree

myXML = r"D:\test.xml"
tree = etree.parse(myXML)
root = tree.getroot()
root.xpath("//gmd_fileIdentifier/gco_CharacterString/text()")
print fileID
code = root.xpath("//gmd_identifier/gmd_RS_Identifier/gmd_code/gco_CharacterString/text()")
print code

ありがとう

4

1 に答える 1

25

そのコンテンツだけではなく、ノード全体をクエリする必要があります。

code = root.xpath('//gmd_identifier/gmd_RS_Identifier/gmd_code/gco_CharacterString')

次に、一致した場合は、そのテキストを置き換えて XML ファイルに保存し直します。

if code:
    # Replaces <gco_CharacterString> text
    code[0].text = '{0328cb65-b564-495a-b17e-e49e04864ab7}'
    # Save back to the XML file
    etree.ElementTree(root).write('D:\test.xml', pretty_print=True)

それで全部です!:)

于 2013-11-14T16:41:31.833 に答える