【问题标题】:Can I get to an index of parsed XML using XStream我可以使用 XStream 获取已解析 XML 的索引吗
【发布时间】:2016-02-10 00:54:03
【问题描述】:

我正在使用 XStream 库进行 XML 解析。我想知道库是否允许直接使用索引跳转到特定节点。

所以例如

<details>
  <personal>
      <basicInfo>
        <firstName>John</firstName>
        <lastName>Doe</lastName>
        <phoneNumber>9999999999</phoneNumber>
        <dateOfBirth>1990-01-01</dateOfBirth>
      </basicInfo>
      <address>
        <street>random St.</street>
        <city>City</city>
        <stateProv>BC</stateProv>
        <country>CA</country>
        <postCode>12345</postCode>
      </address>
    </personal>
  <personal>
      <basicInfo>
        <firstName>John2</firstName>
        <lastName>Doe2</lastName>
        <phoneNumber>9999999999</phoneNumber>
        <dateOfBirth>1990-01-01</dateOfBirth>
      </basicInfo>
      <address>
        <street>random St.2</street>
        <city>City2</city>
        <stateProv>BC2</stateProv>
        <country>CA2</country>
        <postCode>12345</postCode>
      </address>
    </personal>
</details>

对于上面的 XML,我想跳过第一个 &lt;personal&gt;...&lt;/personal&gt; 并且只处理第二个节点。我可以使用索引来调用它吗?

【问题讨论】:

    标签: java xml parsing xstream


    【解决方案1】:

    XStream 是一个简单的库,用于将对象序列化为 XML 并再次返回。

    我不确定您在这种情况下所说的流程是什么意思,但如果您的 POJO 序列化设置正确,以包含“个人”节点列表。我不明白为什么你不能反序列化 XML 并在事后删除不需要的节点。

    【讨论】:

    • 如您所见,在上面的 XML 中,我有两个称为 的节点是否可以指定索引并直接获取第二个节点。我不想处理第一个。在实际场景中,我不想处理数百条记录,只在特定索引上选择一些节点,即记录号 9 或记录号 228 等。就像那样。我不希望图书馆将所有记录都保存在内存中。
    • 那么,XStream 不是你想要的库。尝试查看 XPath。也许,您可以使用 XPath 隔离特定节点,然后使用 XStream 反序列化该部分。
    • 但是 XPath 只适用于 DOM 解析器。它会在加载整个文件时占用整个内存,然后才能允许基于索引的节点获取。
    • 如果您担心效率,请使用您配置 XStream 时使用的任何 XML 解析器。 XStream 是一个序列化/反序列化库。
    • 我正在使用 StaxParser。它给了我速度的优势,但没有给我基于索引的节点获取的灵活性。但根据我读过的内容,这是可能的。我想我会使用一些自定义方法。感谢您的努力。
    【解决方案2】:

    据我所知,vtd-xml 是唯一一个原生提供索引功能的 XML 解析例程,称为 vtd+XML。

    【讨论】:

      猜你喜欢
      • 2012-01-13
      • 2012-04-18
      • 2011-09-19
      • 2017-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-01
      • 1970-01-01
      相关资源
      最近更新 更多