有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何将xml数据存储到arraylist java中

我有一个包含数据的xml文件(不是完整的xml文件)

<header>    
   <ParameterContext>
       <Parameter>
          <Name>FILEID<Name>                        
           <Value>1001445<Value>
       </Parameter>
       <Identifier>Id</Identifier>
    </ParameterContext>
    <ParameterContext>
         <Parameter>
         <Name>product</Name>
         <Value>ECT</ns0:Value>
     </Parameter>
     <Identifier>ProductName</Identifier>
     </ParameterContext>            
    </header>

请帮助我将此xml数据(parametercontext元素的数据)存储到arraylist中

很抱歉没有早点发布。 我有两个类对象和加载

public class object{
   private ArrayList<ParameterContext> parameterCtx = new ArrayList<ParameterContext>();
     public ArrayList<ParameterContext> getParameterCtx() {
    return parameterCtx;
}
   public void setParameterCtx(ParameterContext parameterCtx) {
    this.parameterCtx.add(parameterCtx) ;
}
  public Parameter searchParameter(String name, String identifier,                       ArrayList<ParameterContext> al) {

  for(int i = 0; i < al.size(); i++) {
        if(al.get(i).getIdentifier().equalsIgnoreCase(identifier)) {
            for(int j = 0; j < al.get(i).getParameter().size(); j++) {
                if(al.get(i).getParameter().get(j).getName().equalsIgnoreCase(name) ) {
                    return al.get(i).getParameter().get(j);
                }
            }
        }
    }

    return null ;
}

}

 public class load{
   @XmlElement(name = "ParameterContext")
protected List<load.ParameterContext> parameterContext;
  public List<load.ParameterContext> getParameterContext() {
    if (parameterContext == null) {
        parameterContext = new ArrayList<load.ParameterContext>();
    }
    return this.parameterContext;
}
  @XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
    "parameter",
    "identifier"
})
public static class ParameterContext {

    @XmlElement(name = "Parameter", required = true)
    protected List<load.ParameterContext.Parameter> parameter;
    @XmlElement(name = "Identifier", required = true)
    protected String identifier;
   public List<load.ParameterContext.Parameter> getParameter() {
        if (parameter == null) {
            parameter = new ArrayList<load.ParameterContext.Parameter>();
        }
        return this.parameter;
     }
      public String getIdentifier() {
        return identifier;
    }
 public void setIdentifier(String value) {
        this.identifier = value;
 }
 @XmlAccessorType(XmlAccessType.FIELD)
    @XmlType(name = "", propOrder = {
        "name",
        "value"
    })
    public static class Parameter {

        @XmlElement(name = "Name", required = true)
        protected String name;
        @XmlElement(name = "Value", required = true)
        protected String value;
     public String getName() {
            return name;
        }
       public void setName(String value) {
            this.name = value;
        }
        public String getValue() {
            return value;
        } 
      public void setValue(String value) {
            this.value = value;
        }

当我使用对象时。searchparameter(“字段”,“ID”,object.getParameterCtx())。getValue())

NULLPOINTEREXCEPTION即将到来。(getparameterCtx未初始化)。在这行之前,我需要正确初始化它。如何初始化


共 (2) 个答案

  1. # 1 楼答案

    如果xml元素相同且重复,则使用getter/setter创建属性与元素相同的对象。解析xml数据并将值存储在对象中

  2. # 2 楼答案

    使用JAXB,创建一个模仿XML的类

    @XmlRootElement(name="header")
    public class XMLBean {
       public List<ParameterContext> pc;
    
       public XMLBean() {
    
       }
    
       public List<ParameterContext> getPc() {
          return pc;
       }
       public void setPc(List<ParameterContext> pc) {
          this.pc = pc;
       }
    }
    
    public class ParameterContext {
          public Parameter parameter;
          public String identifier;
    
          public ParameterContext() {
    
          }
          public Parameter getParameter() {
              return pc;
          }
          public void setParameter(Parameter parameter) {
              this.param = param;
          }
          public String getIdentifier() {
              return identifer;
          }
          public void setIdentifier(String identifier) {
              this.identifier = identifier;
          }
    }
    
    public class Parameter {
       public String name;
       public String value;
    
       public Parameter() {
    
       }
    
       public void setName(String name) {
          this.name = name;
       }
    
       public void getName() {
          return name;
       }
    
       public void setValue(String value) {
          this.value = value;
       }
    
       public void getValue(String value) {
          return value;
       }
    }
    
    public static void main(String[] args) {
       InputStream is = YOURXML
       JAXBContext jaxb = JAXBContext.newInstace(XMLBean.class);
       Unmarshaller jaxbUnmarshaller = jaxb.createUnmarshaller();
       XMLBean xml = (XMLBean) jaxbUnmarshaller.unmarshal(is);
    
       System.out.println(xml.getParameterContext().get(0).getParam().getName());
       System.out.println(xml.getParameterContext().get(0).getParam().getValue());
    }
    

    诸如此类