我有一个包含数据的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中。
很抱歉没有提前发布。 我有2个类对象并加载
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;
}
当我使用object.searchparameter(&#34; FIELD&#34;,&#34; ID&#34;,object.getParameterCtx())。getValue());
NULLPOINTEREXCEPTION即将到来。(getparameterCtx未初始化)。在此行之前我需要将其初始化。如何初始化?
答案 0 :(得分:1)
使用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());
}
类似的东西
答案 1 :(得分:0)
如果xml元素相同且重复使用getter / setters创建一个具有属性作为元素的对象。解析xml数据并将值存储在对象中。