从jPOS ISO中提取元素值

时间:2015-05-28 20:19:47

标签: java jaxb iso jpos

我正在尝试从ISO字符串中提取一个值,该值来自jPOS结构化数据。字符串如下所示:

221ThirdPartyBillPayment3125
<ThirdPartyBillPayment>
    <BillPaymentRequest>
        <ReferenceId>1111111111</ReferenceId>
    </BillPaymentRequest>
</ThirdPartyBillPayment>

有没有办法可以获得ReferenceId节点的值“1111111111”?

2 个答案:

答案 0 :(得分:1)

样本数据是一个postilion结构化数据字段,它使用TLV(标记长度值格式)的种类。

221ThirdPartyBillPayment3125
<ThirdPartyBillPayment>
    <BillPaymentRequest>
        <ReferenceId>1111111111</ReferenceId>
    </BillPaymentRequest>

221ThirdPartyBillPayment

这里2是长度的长度(21),21是标签的长度ThirdPartyBillPayment

3125
    <ThirdPartyBillPayment>
        <BillPaymentRequest>
            <ReferenceId>1111111111</ReferenceId>
        </BillPaymentRequest>
    </ThirdPartyBillPayment>

这里3是长度(125),125,是要遵循的数据长度。

您可以编写代码来迭代访问结构化数据中所有可用的xml,然后解析其中的xml数据。 要么 您可以向Postilion询问结构化数据iso字段中使用的xml的dtd / schema,并使用jaxb访问数据。

它将归结为名称值对

ThirdPartyBillPayment= <ThirdPartyBillPayment><BillPaymentRequest<ReferenceId>1111111111</ReferenceId></BillPaymentRequest>
</ThirdPartyBillPayment>

答案 1 :(得分:0)

你有一些固定字段和一些XML混合的自定义数据,所以你首先需要从ISOMsg中获取整个字段,即:

String s = m.getString("127.1"); // provided your data comes in field 127.1

然后找出XML的起始位置(在本例中为indexOf('<')),然后您需要在XML解析器中提供该XML(您可以使用jdom作为jPOS依赖项),解析XML并获取子元素ReferenceId