我正在尝试从ISO字符串中提取一个值,该值来自jPOS结构化数据。字符串如下所示:
221ThirdPartyBillPayment3125
<ThirdPartyBillPayment>
<BillPaymentRequest>
<ReferenceId>1111111111</ReferenceId>
</BillPaymentRequest>
</ThirdPartyBillPayment>
有没有办法可以获得ReferenceId节点的值“1111111111”?
答案 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
。