cs2330 2011-06-15 16:47
浏览 310
已采纳

面向对象读取xml文件的内容是出现问题

问题描述:当读取完xml文件时,objectvector中理论是装的应该是5个不同的对象(id为1,2,3,4,5),但是结果输出的五个对象都是相同(id为5的对象)

[code="java"]
/**
*
* @param fileName xml文件地址
* @param co 要解析成为的对象类型
* @return
*/
public Vector<?> read(String fileName, Class<?> co) {

    /**
     * 变量声明
     */
    // 从xml文档中解析出来的字段及其值
    Map<String, String> xmlfieldValue = new HashMap<String, String>();
    // 对象字段的集合,用于从xml中取该字段的值
    Set<String> s = new HashSet<String>();
    Vector<Object> objectvector = new Vector<Object>();
    String className = "";
    try {
        /**
         * 变量初试化
         */
        Object o = co.newInstance();
        className = o.getClass().getSimpleName();
        Reflect r = new Reflect(o);
        s = r.getFieldName();

        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        DocumentBuilder db = dbf.newDocumentBuilder();
        File file = new File(fileName);
        if (file.exists()) {
            Document doc = db.parse(file);
            Element docEle = doc.getDocumentElement();
            NodeList oobjectNodeList = docEle.getElementsByTagName(className);
            if (oobjectNodeList != null && oobjectNodeList.getLength() > 0) 
            {
                for (int i = 0; i < oobjectNodeList.getLength(); i++) 
                {
                    Node node = oobjectNodeList.item(i);
                    Object o1 =null;
                    if (node.getNodeType() == Node.ELEMENT_NODE) 
                    {
                        Iterator<String> it = s.iterator();
                        while (it.hasNext()) 
                        {
                            String field = it.next();
                            Element e = (Element) node;
                            NodeList nodeList = e.getElementsByTagName(field);
                            String fieldValue = nodeList.item(0).getChildNodes().item(0).getNodeValue();
                            xmlfieldValue.put(field, fieldValue);
                        }
                        o1 = r.setFieldNameAndValue(o, xmlfieldValue);
                                                   //测试是否全部解析,结果全部解析了
                        System.out.println(o1.toString());

                    }
                    objectList.add(o1);
                }
                                    //这个管取第几个对象,结果都是id为5的那个对象
                System.out.println(objectList.get(0).toString());
            }
        }
    } catch (Exception e) {
        System.out.println(e);
    }
    return objectList;
}

[/code]

[code="java"]
public class Linkman {
private String id ;
private String name;
private String location;
private String mail;
private String pic;
private String remark;
private String updateTime;

public Linkman(){}

public String getId() {
    return id;
}

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

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String getLocation() {
    return location;
}

public void setLocation(String location) {
    this.location = location;
}

public String getMail() {
    return mail;
}

public void setMail(String mail) {
    this.mail = mail;
}

public String getPic() {
    return pic;
}

public void setPic(String pic) {
    this.pic = pic;
}

public String getRemark() {
    return remark;
}

public void setRemark(String remark) {
    this.remark = remark;
}

public String getUpdateTime() {
    return updateTime;
}

public void setUpdateTime(String updateTime) {
    this.updateTime = updateTime;
}

@Override
public String toString() {
    return "Linkman [id=" + id + ", location=" + location + ", mail="
            + mail + ", name=" + name +  ", pic="
            + pic + ", remark=" + remark + ", updateTime=" + updateTime
            + "]";
}

[/code]

[code="xml"]
<?xml version="1.0" encoding="GB2312" standalone="no" ?>

  • 1谷歌邮箱赣州无今天cheng无
  • 2谷歌邮箱赣州无今天cheng无
  • 3谷歌邮箱赣州无今天cheng无
  • 4谷歌邮箱赣州无今天cheng无
  • 5谷歌邮箱赣州无今天cheng无

[/code]

  • 写回答

1条回答

  • 也许世界还没停 2011-06-15 17:06
    关注

    objectList在哪里定义的?
    怎么定义的?

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)