<CstmrCdtTrfInitn>
<GrpHdr>
<MsgId>201805231510</MsgId>
<CreDtTm>2018-05-23T12:01:14</CreDtTm>
<NbOfTxs>1</NbOfTxs>
<CtrlSum>111.00</CtrlSum>
<InitgPty>
<Nm>custName</Nm>
<Id>
<OrgId>
<Othr>
<Id>orgNumber</Id>
<SchmeNm>
<Cd>ABCD</Cd>
</SchmeNm>
</Othr>
</OrgId>
</Id>
</InitgPty>
</GrpHdr>
</CstmrCdtTrfInitn>
我找到了几个关于如何修改XML文件中的文本的例子。但我的问题是有重复的节点,如下面的例子中节点 Id 多次出现。我想用其他东西修改值 orgNumber ,但我确实无法找到正确的 Id 。任何意见都将不胜感激。
答案 0 :(得分:-1)
您的XML看起来像是ISO 20022的银行间/付款消息。我使用JAXB和ISO 20022模式取得了成功。 JAXB(J2EE / JEE的一部分,或现在称为Jakarta EE)将为您提供XML消息的Java POJO表示,然后您可以像任何其他Java对象图一样自由地构造和操作它。例如,您可以使用Java表达式(例如
)访问示例中(最里面的)Id
元素的内容。
CstmrCdtTrfInitn myMessage = ...;
String valueOfIdElement =
myMessage.getGrpHdr().getInitgPty().getId().getOrgId().getId();
对于使用JAXB,需要具有描述XML数据的XML Schema文件(.xsd
文件)。您需要使用例如.xsd
文件生成Java类。 https://github.com/highsource/maven-jaxb2-plugin(来自maven)或只是xjc
工具,它是JAXB参考实现的一部分(来自命令行),然后为您拥有的模式配置JAXB。您通常希望至少配置生成的Java类的Java包命名空间。