xmlファイル内の指定されたノード内の値を置き換える2つの方法を試しましたが、機能しません。xml値をPythonに置き換えます
マイファイル:
<?xml version="1.0" encoding="UTF-8"?>
<OrdSet xmlns="tfs" xmlns:xsi="http://www.sample.org/XMLSchema-instance" xsi:schemaLocation="tfs tfs.xsd" Version="25">
<Msg>
<MsgCreate>
<Date>20160324</Date>
<Time>111057</Time>
<Src>
<SrcType>D</SrcType>
<DlrCode>0001</DlrCode>
</Src>
<Target>
<TargetType>F</TargetType>
<MgmtCode>BTG</MgmtCode>
</Target>
</MsgCreate>
<MsgType>
<OrdReq>
<ActnCode>NEW</ActnCode>
<SrcID>64698602107101</SrcID>
<RepCode>0000</RepCode>
<OrdDtl>
<AcctLookup>
<MgmtCode>ABC</MgmtCode>
<FundAcctID>984575</FundAcctID>
<AcctDesig>2</AcctDesig>
</AcctLookup>
<TrxnDtl>
<Buy>
<TrxnTyp>5</TrxnTyp>
<FundID>205</FundID>
<Amt>
<AmtType>D</AmtType>
<AmtValue>600.00</AmtValue>
</Amt>
</Buy>
</TrxnDtl>
</OrdDtl>
</OrdReq>
</MsgType>
</Msg>
omitted ...
私の目標は、NEWからCANにActnCode値を交換することです。
I.e., <ActnCode>CAN</ActnCode>
試み#1:スクリプトは正常に動作しますが、値が出力ファイルにはまだ "NEW" です。何も変更されていないようです。
import xml.etree.ElementTree as ET
tree = ET.parse("~\input.xml")
root = tree.getroot()
elems = tree.findall('ActnCode')
for elem in elems:
\t elem.txt = 'CAN'
tree.write("~\output.xml")
試み#2:スクリプトは、同様に正常に動作しますが、意図したとおり、それは働いていません。
xmldoc = minidom.parse('~input.xml')
action_code = xmldoc.getElementsByTagName('ActnCode')
firstchild = action_code[0]
firstchild.setAttribute('ActnCode', 'CAN')
result:
<ActnCode ActnCode="CAN">NEW</ActnCode>
最終的に、私はPythonは、XMLドキュメントに目を通すすべてActnCodeノードを見つけて、 "CAN" に値を変更したいです。どんな助けもありがとう。
の兄弟を持つノードに制限これは、XSLTで簡単です。 etreeの代わりに*** lxml ***を使ってXSLT変換を実行できますか? –