如何使用Java解析XML?

use*_*020 2 java xml parsing

<?xml version="1.0" ?> 
<input>
    <sys>
      <protocol>TL1</protocol> 
      <ipAddress>10.05.2.3</ipAddress>
      <port>2001</port>
      <prompt>agent</prompt>       
       <TL1Command>
           <type>get</type>
           <command_code>...........</command_code>
           <staging_block>      
                <tid>...........</tid>
                <aid>...........</aid>
                <ctag>..........</ctag>
                <gen_block>.....</gen_block>
           </staging_block>
           <payload_block>
                <data_block>.......</data_block>
           </payload_block>
    </TL1Command>
    </sys>
    <sys>
      <protocol>TL1</protocol> 
      <ipAddress>10.5.2.98</ipAddress>
      <port>2001</port>
      <prompt>agent</prompt>       
       <TL1Command>
           <type>get</type>
           <command_code>...........</command_code>
           <staging_block>      
                <tid>...........</tid>
                <aid>...........</aid>
                <ctag>..........</ctag>
                <gen_block>.....</gen_block>
           </staging_block>
           <payload_block>
                <data_block>.......</data_block>
                <data_block>.......</data_block>
                <data_block>.......</data_block>
           </payload_block>
    </TL1Command>
    </sys>
</input>
Run Code Online (Sandbox Code Playgroud)

我想知道如何使用Java解析这个XML.这样我可以使用该数据,因为它对我的程序使用相同的方式.我知道如何解析它,但问题是每个命令可能有不同数量的数据块.因此在解析之后,我需要为各自的命令使用相应的数据块.我的意思是在重新启动时第一个命令我应该只获得一个数据块值,而第二个命令则获得3个数据块,依此类推.请让我知道解决此问题的任何示例代码.

cle*_*tus 11

解析XML有两种基本方法.

  1. 基于游标(StAX)或事件(SAX)的方法.更轻巧但通常更冗长.当你只想抓取小零件或加工很容易时,这一点特别好; 和
  2. 基于树的方法(DOM).通常,DOM解析器无论如何都是建立在SAX/StAX解析器之上的.他们需要更多的处理,通常需要你有在内存中的整个文档之前,你可以做任何事情(而SAX/StAX的可以更高效和快速响应).但这对于"随机"访问文档部分很有用.

选择最适合您情况的选项.