java - 使用 JAXB 解码 XML 时跳过 XML 节点

标签 java xml jaxb unmarshalling

是否可以像这样解码 XML 文件:

<company id="bh23" name="imob">
   <store>
      <store-info id="2392">
         <address>NYC</address>
         <name>Imob's NYC 5th</name>
      </store>
      <products>
         <product>
             <name>keyboard</keyboard>
             <price>2000</price>
         </product>
         <product>
             <name>mouse</keyboard>
             <price>1000</price>
         </product>
      </products>
   </store>
   <store />
</stores>

像这样的类:

@XmlElementRoot(name = "company")
public class Company {

    @XmlAttribute (name = "id")
    String id;
    @XmlAttribute (name = "name")
    String name;
    @XmlElement (name = "store")
    List<Store>stores;

    //all the getters and setters
 }


 @XmlElementRoot (name = "store")
 public class Store {

      @XmlAttribute (name = "id")
      String id;
      @XmlElement (name = "address")
      String address;
      @XmlElement (name = "name")
      String name;
      @XmlElementWrapper (name = "products")
      @XmlElement (name = "product")
      List<Product>products;

      //all the getters and setters
  }

  public class main {
      public static void main (String args[]) {
        try {
            JAXBContext jaxbContext = JAXBContext.newInstance(Company.class);  
            Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();  
            Company portfolio = (Company) jaxbUnmarshaller.unmarshal(new File(xmlUrlPath));
            System.out.println(portfolio.toString());
        } catch (JAXBException e) {
            e.printStackTrace();
        }
      }
   }

我正在尝试“跳过”或“跳转”名为“store-info”的节点,因为我不想创建另一个类来保留商店的地址和名称,因为这样会更简单“将地址和名称附加到“Store”类。 当然,当我运行代码时,变量“address”、“id”和“name”变为空,只有产品列表被正确解码。 有没有办法跳过一个节点,将它们的字段合并到另一个类中?我正在避免(出于“合法”目的)使用 MOXy 库及其 XPath 注释。

最佳答案

您可以创建一个 StAX 过滤的 XMLStreamReader 并让 JAXB 解码它以忽略一个或多个 XML 元素。

下面是我在回答类似问题时给出的完整示例的链接:

关于java - 使用 JAXB 解码 XML 时跳过 XML 节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26392679/

相关文章:

web-services - 没有无限循环的 JAX WS 服务上的 Jpa 实体

java - 将 Maven 与 Eclipse Kepler 集成的问题

java - 如何从不同的maven项目导入spring资源?

Java XML DOM 整型值

java - JAXB - 更改结构子节点

java - 通过 Java 数据库到 XML(反之亦然)

java - 什么是 NullPointerException,我该如何解决?

java - 在请求范围内使用依赖选择列表

java - Apache Storm 没有收到来自 kafka 的消息

c# - 当来自字符串时,SqlXml 删除 XML header