java - 如何使用 Java 解析 XML?

标签 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>

我想知道如何使用 Java 解析此 XML。这样我就可以以相同的给定方式为我的程序使用该数据。我知道如何解析它,但问题是每个命令可能有不同数量的数据 block 。所以在解析之后我需要为各自的命令使用各自的数据 block 。我的意思是,对于检索时的第一个命令,我应该只获取一个数据 block 值,对于第二个命令,我应该获取 3 个数据 block ,依此类推。请让我知道解决此问题的任何示例代码。

最佳答案

解析 XML 有两种基本方法。

  1. 基于游标 (StAX) 或事件 (SAX) 的方法。更轻巧但通常更冗长。当您只想抓取小零件或加工容易时,这特别好;和
  2. 基于树的方法 (DOM)。无论如何,DOM 解析器通常构建在 SAX/StAX 解析器之上。它们需要更多的处理,并且通常要求您在执行任何操作之前将整个文档保存在内存中(而 SAX/StAX 的效率和响应速度可以)。但这对于“随机”访问文档部分很有用。

选择最适合您的情况。

关于java - 如何使用 Java 解析 XML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1722140/

相关文章:

c# - XmlTextReader 问题

java - 如何检查端点是否用于 munit 测试

ruby - 命令行中的 Jekyll JSON 错误?

java - 在 hadoop 中实现多个映射器和单个 reducer

java - 重写方法以将一组不同的分隔符传递给扫描仪

java - session 超时时无法获取 session 作用域 bean

parsing - 共享迭代器

java - n维空间坐标的表示和命名

python - 如何使用 XPath 选择两个特定表行之间的元素

javascript - 为什么 'new Date()' 无法正确解析字符串日期?