JDOM是否可以生成这样的XML,在线等...

2025-01-03 14:23:22
推荐回答(2个)
回答1:

不能,这样违反XML规范,任何XML处理的API都不能生成这种XML。不仅不能生成,也不能读取。

回答2:

动态数据,请参考此例。记得要加入该有jar文件

import java.io.File;
import java.io.FileOutputStream;
import java.util.List;

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.output.XMLOutputter;

public class JDOM {
private static Element getElementForAttr(String name,String[] keyfield,String[] key){
Element item=new Element(name);
if(keyfield!=null&&keyfield.length>0){
for(int i=0;i item.setAttribute(keyfield[i],key[i]);
}
}
return item;
}
/*
* 输出到指定的xml文件
*/
public static long WriteXMLDoc(Document Doc,String filepath,String filename){
try{
org.jdom.output.Format format = org.jdom.output.Format.getCompactFormat();
format.setEncoding("UTF-8");
format.setIndent(" "); //缩进4个空格后换行
XMLOutputter XMLOut = new XMLOutputter(format);
// 输出 XML 文件;
File file=new File(filepath);
boolean s=false;
if(file.exists()==false){
s=file.mkdirs();
}
FileOutputStream fops= new FileOutputStream(filepath+filename);
XMLOut.output(Doc, fops);
fops.close();
return 0;
}catch(Exception e){
e.printStackTrace();
return -1;
}

}
public static void main(String[] args){
Element root = new Element("weaver");
root.setAttribute("type","pushrequest");// 设置根节点属性
Document Doc = new Document(root);
List xmlrecords = root.getChildren();
xmlrecords.add(getElementForAttr("userid",null,null).addContent("1"));
xmlrecords.add(getElementForAttr("username",null,null).addContent("系统管理员"));
Element datas=getElementForAttr("datas",null,null);
Element data=null;
Element name=null;
Element mail=null;
Element qq=null;
for(int i=0;i<2;i++){//添加data子节点
data=getElementForAttr("data",null,null);
name=getElementForAttr("name",null,null).addContent("姓名");
mail=getElementForAttr("mail",null,null).addContent("邮箱地址");
qq=getElementForAttr("qq",null,null).addContent("QQ号码");
data.addContent(name);
data.addContent(mail);
data.addContent(qq);
datas.addContent(data);//添加datas一个子节点data
}
xmlrecords.add(datas);
WriteXMLDoc(Doc,"c://","test.xml");
}
}