当前位置: 首页 > 知识库问答 >
问题:

当存在多个同名节点时修改XML中的值[duplicate]

廉飞捷
2023-03-14
<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。如有任何意见,将不胜感激。

共有1个答案

曾弘扬
2023-03-14

您的XML看起来像ISO 20022银行间业务/支付消息。我成功地将JAXB与ISO20022模式结合使用。JAXB(J2EE/JEE的一部分,或者现在称为Jakarta EE)将为您提供XML消息的Java POJO表示,然后您可以像其他Java对象图一样自由地构造和操作它。例如,您可以使用Java表达式访问示例中(最里面的)id元素的内容,例如

CstmrCdtTrfInitn myMessage = ...;
String valueOfIdElement =
 myMessage.getGrpHdr().getInitgPty().getId().getOrgId().getId();

对于使用JAXB,需要有描述XML数据的XML模式文件(.xsd文件)。您将需要使用例如从.xsd文件生成Java类。https://github.com/highsource/maven-jaxb2-plugin(来自maven)或仅使用xjc工具,该工具是JAXB参考实现的一部分(来自命令行),然后为您拥有的模式配置JAXB。您通常至少需要配置生成的Java类的Java包名称空间。

 类似资料:
  • 对于 EZRMutableNode\ 类的实例来说,T value属性是可写并且线程安全的。我们可以通过点语法来修改一个可变节点的值,像这样: EZRMutableNode<NSNumber *> *node = [EZRMutableNode value:@55]; node.value = @82; 有的时候,你希望将一个可变节点重新修改为空值(EZREmpty.empty),由于泛型约束通

  • firebase中我的数据库截图 这里我有一个叫做产品的节点。在那里,我有许多子节点。所有这些节点都有一个共同的值叫做产品库存。我需要更新产品内部所有节点的产品库存值。我如何在android Studio(Java)中做到这一点,因为我正在开发一个购物应用程序?需要帮助。 流程是:用户将产品添加到购物车。在购物车里,我有ordernow按钮。因此,当用户现在单击order时,应该从products

  • 我刚刚开始学习如何使用XML数据格式,并且已经在更新一些数据上陷入了困境。我真的,真的很感谢有人帮我解决这个问题,因为我完全不知道怎么处理这样的问题。 生成一些示例数据的代码: 现在困难的部分来了... 我需要更新“value”节点的值,其中“key”节点的值=“abc”在同一个“parameter”节点中。 正如您所看到的,我的xml中有几个“参数”节点,这些节点没有我可以用来区分它们和确定应该

  • 我有以下数据结构(原始数据结构为2.5gb,因此必须进行解析): 我想提取所有值及其相应的值。最后,我计划有一个带有一列personId和一列income的df(income将是重复的)。因此,棘手的部分不仅是名称空间,还包括如何在不同的节点级别访问XML。 到目前为止,我的方法无法做到这一点。 非常感谢您的帮助。