SAX方式解析XML文件的方法分析,并取特定字段生成对象

 SAXSimple API for XMLSAX的工作原理简单地说就是对文档进行顺序扫描,当扫描到文档(document)开始与结束、元素(element)开始与结束、文档(document)结束等地方时通知事件处理方法,由事件处理函数做相应动作,然后继续同样的扫描,直至文档结束。SAX解析方式适用于大型文档,因为他的解析是逐行进行不用像DOM中那样为所有节点创建对象,这样效率大大提高,所以虽然它不是W3C标准,但它却得到了广泛认可。


1,这是需要解析的XML

<?xml version="1.0" encoding="UTF-8"?>

<packet className="" type="字符串定长报文">

  <reference name="报文头" referenceFile="service/bizservice/host/head/snd_host_head1.packet"/>

  <category name="body">

    <field fieldDefaultValue="""" fieldDescription="省代码" fieldName="PROVINCECODE" fieldSubtle="false" fieldType="String" fieldValidation="false">

      <valueExpr expr="PROVINCECODE"/>

      <method className="StringMethod" methodName="fill">

        <parameter name="fillchar" type="string" value="0"/>

        <parameter name="len" type="int" value="2"/>

        <parameter name="dir" type="string" value="左边"/>

      </method>

      <parameter name="位置" value="-1"/>

      <parameter name="偏移量" value="0"/>

      <parameter name="数据格式" value="9(2)"/>

    </field>

    <field fieldDefaultValue="""" fieldDescription="旧账号" fieldName="OLDACCTNO" fieldSubtle="false" fieldType="String" fieldValidation="false">

      <valueExpr expr="OLDACCTNO"/>

      <method className="StringMethod" methodName="fill">

        <parameter name="fillchar" type="string" value=" "/>

        <parameter name="len" type="int" value="23"/>

        <parameter name="dir" type="string" value="右边"/>

      </method>

      <parameter name="位置" value="-1"/>

      <parameter name="偏移量" value="0"/>

      <parameter name="数据格式" value="X(23)"/>

    </field>

    <field fieldDefaultValue="""" fieldDescription="偏移量(界面隐藏)" fieldName="OFFSETPOS" fieldSubtle="false" fieldType="String" fieldValidation="false">

      <valueExpr expr="OFFSETPOS"/>

      <parameter name="位置" value="-1"/>

      <parameter name="偏移量" value="0"/>

      <parameter name="数据格式" value="9(3)"/>

    </field>

    <field fieldDefaultValue="""" fieldDescription="账号" fieldName="ACCTNO" fieldSubtle="false" fieldType="String" fieldValidation="false">

      <valueExpr expr="ACCTNO"/>

      <parameter name="位置" value="-1"/>

      <parameter name="偏移量" value="0"/>

      <parameter name="数据格式" value="9(17)"/>

    </field>

    <field fieldDefaultValue="""" fieldDescription="子账户类型" fieldName="SUBACCTTYPE" fieldSubtle="false" fieldType="String" fieldValidation="false">

      <valueExpr expr="SUBACCTTYPE"/>

      <parameter name="位置" value="-1"/>

      <parameter name="偏移量" value="0"/>

      <parameter name="数据格式" value="X(4)"/>

    </field>

    <field fieldDefaultValue="""" fieldDescription="册号" fieldName="VOLUMENO" fieldSubtle="false" fieldType="String" fieldValidation="false">

      <valueExpr expr="VOLUMENO"/>

      <method className="StringMethod" methodName="fill">

        <parameter name="fillchar" type="string" value="0"/>

        <parameter name="len" type="int" value="3"/>

        <parameter name="dir" type="string" value="左边"/>

      </method>

      <parameter name="位置" value="-1"/>

      <parameter name="偏移量" value="0"/>

      <parameter name="数据格式" value="9(3)"/>

    </field>

    <field fieldDe

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值