2 qq 15173955 qq_15173955 于 2016.04.05 19:20 提问

java中解析xml,要求在控制台输出但是输出的是null

package pero.common.Metied;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.text.MessageFormat;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;

public class JaxbRootXml {
@SuppressWarnings("unchecked")
public static T readString(Class clazz,String context)throws JAXBException{
try{
JAXBContext jc=JAXBContext.newInstance(clazz);
Unmarshaller u=jc.createUnmarshaller();
return (T) u.unmarshal(new File(context));
}catch(JAXBException e){
throw e;
}
}

@SuppressWarnings("unchecked")
public static <T> T readConfig(Class<T> clazz, String config, Object... arguments) throws IOException,
        JAXBException {
    InputStream is = null;
    try {
        if (arguments.length > 0) {
            config = MessageFormat.format(config, arguments);
        }
        JAXBContext jc = JAXBContext.newInstance(clazz);
        Unmarshaller u = jc.createUnmarshaller();
        is = new FileInputStream(config);
        return (T) u.unmarshal(is);
    } catch (IOException e) {
        throw e;
    } catch (JAXBException e) {
        throw e;
    } finally {
        if (is != null) {
            is.close();
        }
    }
}


@SuppressWarnings("unchecked")
public static <T> T readConfigFromStream(Class<T> clazz, InputStream dataStream) throws JAXBException {
    try {
        JAXBContext jc = JAXBContext.newInstance(clazz);
        Unmarshaller u = jc.createUnmarshaller();
        return (T) u.unmarshal(dataStream);
    } catch (JAXBException e) {
        throw e;
    }
}


public static void main(String[] args) throws JAXBException {
    TestRoot tr=JaxbRootXml.readString(TestRoot.class, "test/1.xml");

    for(TestUser u:tr){
        System.out.println(u.getId());
            System.out.println(u.getName());
            System.out.println(u.getPassword());
            System.out.println(u.getAge());
    }
}

}

package pero.common.Metied;

import java.util.ArrayList;
import java.util.List;

import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

@SuppressWarnings("serial")
@XmlRootElement(name="Root")
public class TestRoot extends ArrayList{

@XmlElement(name = "user")
public List<TestUser> getUsers(){
    return this;
}

}

package pero.common.Metied;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;

@XmlAccessorType(XmlAccessType.FIELD)
public class TestUser {

@XmlAttribute(name = "id")
private String id;

public String getId() {
    return id;
}
public void setId(String id) {
    this.id = id;
}

@XmlAttribute(name = "name")
private String name;
@XmlAttribute(name = "password")
private String password;
@XmlAttribute(name = "age")
private String age;
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
public String getPassword() {
    return password;
}
public void setPassword(String password) {
    this.password = password;
}
public String getAge() {
    return age;
}
public void setAge(String age) {
    this.age = age;
}

}

此处是要解析的

  • user112320
  • user245621
  • user312321
  • user412321

3个回答

qq_33867930
qq_33867930   2016.04.06 08:31

用debug或者log找出哪一行报异常再问估计会有人帮你解决。

qq_15173955
qq_15173955   2016.04.06 09:05

现在不报异常,for循环出来获取的是null值

zhaihonghonghzh
zhaihonghonghzh   2016.04.06 17:13

xml文件中的数据格式是什么样的

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
预习Dom4J之:把XML输出到Java控制台
结果: 准备: xml文件 <!DOCTYPE Students [ ]> 洛清风 18 穆修杉 19 开始: 1)导入Dom4J到Java工程 2)设计好打印xml到控制台的方法 /** * Title:printXML * Description:打印xml * @param elm
Java解析XML getNodeValue()返回空
最近在写解析XML的程序,可能是更新jar包的原因,原有程序居然报错了,程序代码: org.w3c.dom.NodeList rsdes = resDoc.getElementsByTagName("resultdescription"); if(rsdes!=null&&rsdes.getLength()>0){ throw new RuntimeException(rsdes.item(
java Console 控制台为null问题 Console con = System.console()
问题描述学习如何从控制台输入中一般都会使用Scanner类,但是读取密码时JavaSE6引入了Console类,测试代码如下: Console console = System.console(); System.out.println(console); System.out.print("请输入你的名字:"); String per
java控制台中文汉字乱码
java资源的编码都是utf8,使用utf8编译。但是控制台输出的时候,中文汉字还是会出现乱码。
Myeclipse运行程序时出现Console没有输出信息(只有<terminate>...)解决方法
出现这个是因为你在创建项目的时候选择了默认 还有就是试试选择启动服务
[JAVA] xml遍历输出
import java.util.Map;import org.w3c.dom.Document;import org.w3c.dom.NamedNodeMap;import org.w3c.dom.Node;import org.w3c.dom.NodeList;import com.sgcc.tools.ParseXML;public class MessageConvert {public ...
键盘录入多个数据,以0结束,要求在控制台输出这多个数据中的最大值
package cn.itcast_03; import java.util.ArrayList; import java.util.Arrays; import java.util.Scanner; /*  * 键盘录入多个数据,以0结束,要求在控制台输出这多个数据中的最大值  *   * 分析:  * A:创建键盘录入数据对象  * B:键盘录入多个数据,我们
sax解析xml文件实例一(注意endElement 内部最后 currentTag=null)
本文重点两点:1.再一次解析一个xml,验证之前的理解。 2. 发现endElement内最后一定要 currentTag = null ------------------------------------------------------------------------------------------------------------------ 注意:一定要在endEle
XML解析之sax解析案例(一)读取contact.xml文件,完整输出文档内容
一、新建Demo2类: import java.io.File; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; /** * 读取contact.xml文件,完整输出文档内容 * @author APPle * */ public class Demo2 { publi
Java格式化XML输出
之前通过DOM修改了Dom树之后,保存输出xml发现格式总是