首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何处理整个xml,然后返回片段

如何处理整个xml,然后返回片段
EN

Stack Overflow用户
提问于 2018-10-29 05:42:17
回答 1查看 295关注 0票数 0

对于etl处理,我有如下所示的xml

代码语言:javascript
复制
<?xml version="1.0"?>
<OMeS  version="2.3"   adapId="nokrww"  xmlns="pm/cnf_rnc_nsn.7.0.xsd">
  <PMSetup  startTime="2018-10-23T11:00:00.000+05:00:00" interval="15">
    <PMMOResult>
      <MO dimension="network_element">
        <DN><![CDATA[PLMN-PLMN/RNC-3/WBTS-500/WCEL-1]]></DN>
      </MO>
      <MO dimension="MCCMNC">
        <DN><![CDATA[PLMN-PLMN/MCC-4/MNC-5]]></DN>
      </MO>
      <PMTarget  measurementType="L3Iub">
        <M1005C0>424</M1005C0>
        <M1005C1>858</M1005C1>
    </PMMOResult>
    <PMMOResult>
      <MO dimension="network_element">
        <DN><![CDATA[PLMN-PLMN/RNC-3/WBTS-501/WCEL-2]]></DN>
      </MO>
      <MO dimension="MCCMNC">
        <DN><![CDATA[PLMN-PLMN/MCC-5/MNC-6]]></DN>
      </MO>
      <PMTarget  measurementType="L3Iub">
        <M1005C0>201</M1005C0>
        <M1005C1>300</M1005C1>
    </PMMOResult>
</PMSetup>
</OMeS>

如果我将PMMOResult用于fragmentRootElementName,则无法访问startTime属性。

如果我使用OMes作为fragmentRootElementName,我只需要编写一项

如何重写StaxEventItemReader以使用OMeS作为fragmentRootElementName读取整个文档,然后访问PMMOResult标记下的所有嵌套元素,进行一些更改并以列表形式返回?

EN

回答 1

Stack Overflow用户

发布于 2018-10-29 08:25:29

这不可能。StaxEventItemReader一次只能读取一种类型(从项目读取器的基本契约:ItemReader<T>)。将fragmentRootElementName设置为PMSetup以获取startTime属性是可能的,但最终会在内存中得到一个包含所有PMMOResult子元素的巨大的PMSetup元素项,这不是您想要的。

因此,我建议分两步进行:

  • 步骤1:使用tasklet从"header“元素获取所需的任何元数据(如果需要,将其传递到步骤2执行上下文)
  • 步骤2:使用面向块的任务来处理块中的PMMOResult元素,方法是将fragmentRootElementName设置为StaxEventItemReader中的PMMOResult

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53039398

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档