【问题标题】:Extract specific elements from an input file and write them to an output file using StAX从输入文件中提取特定元素并使用 StAX 将它们写入输出文件
【发布时间】:2015-05-04 20:11:41
【问题描述】:

假设我有下一个 XML:

<?xml version="1.0" encoding="UTF-8"?>
<orders>
     <order created='2002-02-12T11:10:30.000' ID='1233'>
          <fruit>
               <description>Red apples</description>
               <price currency="USD">13.25</price>
               <gardener>John</gardener>
          <fruit>
          <fruit>
               <description>Bananas</description>
               <price currency="USD">11.19</price>
               <gardener>Ana</gardener>
          <fruit>
          <fruit>
               <description>Golden apples</description>
               <price currency="USD">16.46</price>
               <gardener>John</gardener>
          <fruit>
     </order>
     <order created='2002-02-13T15:32:30.000' ID='1234'>
          <fruit>
               <description>Oranges</description>
               <price currency="USD">10.99</price>
               <gardener>Ana</gardener>
          <fruit>
          <fruit>
               <description>Kiwi</description>
               <price currency="USD">10.39</price>
               <gardener>Helen</gardener>
          <fruit>
     </order>
</orders>

而且我需要为每个不同的分级机编写一个 XML 文件。 (约翰、安娜、海伦)。 xml 文件的名称应该类似于gradener_name##,其中## 是“order”元素(例如 Ana12)中 ID 属性值的前 2 位数字。 前任。 Ana12.xml

<?xml version="1.0" encoding="UTF-8"?>
<fruits>
     <fruit>
          <description>Bananas</description>
          <price currency="USD">11.19</price>
          <gardener>Ana</gardener>
     <fruit>
     <fruit>
          <description>Oranges</description>
          <price currency="USD">10.99</price>
          <gardener>Ana</gardener>
     <fruit>
</fruits>

在这里,水果是按价格排序的。第一个水果价格较高。

【问题讨论】:

    标签: xml tags extract elements stax


    【解决方案1】:

    您需要分两步完成:

    1. 例如使用XMLInputFactoryXMLStreamReader 读取XML。在阅读 XML 时,您可以创建自己的模型表示(由您创建一个 gardener_name## 等效模型)
    2. 在读取此 XML 之后,您必须拥有一个包含 3 个 Gardener 对象或您创建的任何对象的集合,创建一个新的 XML 文件并使用 XMLOutputFactoryXMLStreamWriter 生成您想要的内容。

    拥有自己的模型可以轻松按价格对水果进行分类。我认为在不创建自定义中间 Java 模型的情况下尝试执行此操作不是一个好方法。

    编辑: 作为对您其他问题的补充评论:不要尝试同时阅读和写作。你的逻辑需要java对象表示,你不能只通过对事件做出反应来做你想做的事。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-08-07
      • 1970-01-01
      • 2014-10-18
      • 1970-01-01
      • 2017-04-27
      • 2013-03-18
      • 1970-01-01
      相关资源
      最近更新 更多