<?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>
我想知道如何使用 Java 解析此 XML。这样我就可以以相同的给定方式为我的程序使用该数据。我知道如何解析它,但问题是每个命令可能有不同数量的数据 block 。所以在解析之后我需要为各自的命令使用各自的数据 block 。我的意思是,对于检索时的第一个命令,我应该只获取一个数据 block 值,对于第二个命令,我应该获取 3 个数据 block ,依此类推。请让我知道解决此问题的任何示例代码。
最佳答案
解析 XML 有两种基本方法。
- 基于游标 (StAX) 或事件 (SAX) 的方法。更轻巧但通常更冗长。当您只想抓取小零件或加工容易时,这特别好;和
- 基于树的方法 (DOM)。无论如何,DOM 解析器通常构建在 SAX/StAX 解析器之上。它们需要更多的处理,并且通常要求您在执行任何操作之前将整个文档保存在内存中(而 SAX/StAX 的效率和响应速度可以多)。但这对于“随机”访问文档部分很有用。
选择最适合您的情况。
关于java - 如何使用 Java 解析 XML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1722140/