元素 //第一列存储
元素的ballsnum属性值
Element ballsnum = trElement.addElement("td");
ballsnum.addText(rowEle.attributeValue("ballsnum"));
//第二列存储
元素的opentime属性值
Element opentime = trElement.addElement("td");
opentime.addText(rowEle.attributeValue("opentime"));
//第三列存储
元素的opencode属性值
Element opencode = trElement.addElement("td");
opencode.addText(rowEle.attributeValue("opencode"));
//第四列存储
元素的expect属性值
Element expect = trElement.addElement("td");
expect.addText(rowEle.attributeValue("expect"));
}
System.out.println(doc.asXML());
} catch (Exception e) {
e.printStackTrace();
}
}
}
我将
存储在D盘下的test.xml文件中
我读取D盘下的test.xml文件中的xml内容生成了一个表格
System.out.println(doc.asXML());语句将在控制台打印表格内容
打印结果如下:
| 3 |
2014-01-19 21:30:00 |
05,14,16,21,29,30|12 |
14008 |
| 3 |
2014-01-16 21:30:00 |
08,10,12,14,18,28|14 |
14007 |
dom4j生成xml会自动添加换行符 ,怎么处理
换行符"\r\n",如是用dom4j之类的jar包操作,dom4j换行如下 /** * 通过 org.dom4j.io.OutputFormat 来设置XML文档输出格式 */ OutputFormat format = OutputFormat.createPrettyPrint(); //设置XML文档输出格式 format.setEncoding("GB2312"); //设置XML文档的编码类型 format.setSuppressDeclaration(true); format.setIndent(true); //设置是否缩进 format.setIndent(" "); //以空格方式实现缩进 format.setNewlines(true); //设置是否换行
dom4j插入子节点,自动生成xmlns=的问题,有谁遇到过,请帮忙解决,谢谢!
要读的xml文件
李华
姓名>
14
年龄>
学生>
张三
姓名>
16
年龄>
学生>
学生花名册> Vector students_Vector; private Vector readXMLFile(String file) throws Exception { DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = dbf.newDocumentBuilder(); Document doc = builder.parse(file); // 获取到xml文件 // 下面开始读取 Element root = doc.getDocumentElement(); // 获取根元素 NodeList students = root.getElementsByTagName_r("学生"); students_Vector = new Vector(); for (int i = 0; i < students.getLength(); i++) { // 一次取得每一个学生元素 Element ss = (Element) students.item(i); // 创建一个学生的实例 student stu = new student(); stu.setSex(ss.getAttribute("性别")); NodeList names = ss.getElementsByTagName_r("姓名"); Element e = (Element) names.item(0); Node t = e.getFirstChild(); stu.setName(t.getNodeValue()); NodeList ages = ss.getElementsByTagName_r("年龄"); e = (Element) ages.item(0); t = e.getFirstChild(); stu.setAge(Integer.parseInt(t.getNodeValue())); students_Vector.add(stu); } return students_Vector; } 参照这个写 这个问题是许多初次使用dom4j生成xml文件时可能都会遇到的问题,也是在定义缺省名称空间时遇到的常见问题,解决的办法其实也很简单:如果你要为某个元素节点上定义一个缺省的名称空间,可直接在定义元素element的时候就应该为其指定一个不带前缀的名称空间,如: element.addElement(name,url);//name为你的新定义元素节点名,URL就是你的名称空间。 当然,一般更多的是在根元素上定义缺省的名称空间,此时定义格式如下: Element root=document.addElement(name,url);//name为你的新定义元素节点名,URL就是你的名称空间。 特别注意:不要通过类似于element.addNamspace("",url)这样的方式来为某个元素节点指定缺省名称空间,这样的做法就会出现你说描述的上述问题。
在JAVA web项目中,如果用dom4j来操作xml文件,应该怎么写SAXReader.read(“路径”),这个路径该怎么写
可以参考 : package com.zuxia.dom4j; import java.io.File; import java.io.FileOutputStream; import java.util.Iterator; import java.util.List; import java.util.Scanner; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.OutputFormat; import org.dom4j.io.SAXReader; import org.dom4j.io.XMLWriter; /** * * 使用dom4j解析xml * * 1. 创建解析器 * * 2. 创建文档对象Document * * 3. 获取根节点 * */ public class Dom4jParseXML { public static void main(String[] args) {
//1. 创建解析器 SAXReader saxreader = new SAXReader();
Document doc = null; try { //2. 创建文档对象Document doc = saxreader.read(new File("src/studentinfo.xml")); } catch (Exception e) { System.out.println("读取xml文件异常!"); }
//3. 获取根节点 Element root = doc.getRootElement();
//4. 获取元素 Iterator
iter = root.elementIterator();
while(iter.hasNext()){
Element student = iter.next();
System.out.println("学号:"+student.attributeValue("stuno")+"\t姓名:"+student.elementText("name"));
}
//提示用户添加新的数据
Scanner sc = new Scanner(System.in);
System.out.println("请输入学号:");
String stuno = sc.nextLine();
System.out.println("请输入姓名:");
String name = sc.nextLine();
System.out.println("请输入年龄:");
String age = sc.nextLine();
//将数据添加在Document中
Element student = root.addElement("student");
student.addAttribute("stuno", stuno);
student.addElement("name").addText(name);
student.addElement("age").addText(age);
//3. 设置格式
OutputFormat format = OutputFormat.createCompactFormat();
format.setIndentSize(4);
format.setNewlines(true);
try {
//4. 保存xml文件
XMLWriter out = new XMLWriter(new FileOutputStream("src/studentinfo.xml"),format);
out.write(doc);
System.out.println("ok!!!");
} catch (Exception e) {
System.out.println("失败!");
}
System.out.println("完成了!");
}
}
java dom4j生成xml字符串是怎么设置编码
/** 将document中的内容写入文件中 */ OutputFormat outputFormat = new OutputFormat(); outputFormat.setEncoding("UTF-8"); XMLWriter writer = new XMLWriter(new FileWriter(new File(filename)),outputFormat); writer.write(document); writer.close(); /** 执行成功,需返回1 */ returnValue = 1;
【求助】Dom4j 生成xml,节点增加属性时,属性值中有特殊字符,如何做到不转义
我通过Dom4j读取file节点的append属性值的时候,当该节点没有设置append的值,读取的数据为空,但我想当没有显示声明值的时候,读取到的是xsd文件中设置的默认值,有人做过类 setEscapeText(false) 只是能改变 escapeElementEntities(String st) 中的参数,主要能改变文本里面如:
aaaa>bbbb
中aaaa>bbbb的中的>不转变
对于Attribute 里面的特殊字符,我查了好久的原码发现人家里面是从
protected void writeEscapeAttributeEntities(String txt) throws IOException {
if (txt != null) {
String escapedText = escapeAttributeEntities(txt);
writer.write(escapedText);
}
}//(在XMLWriter类中第1174行)
里面有个 escapeAttributeEntities(txt); 这个是专门用来转变Attribute 里面的特殊字符的,
所以要想解决这个问题,我是用了继承,写了一个
public class MyXMLWriter extends XMLWriter {
......
protected void writeEscapeAttributeEntities(String txt) throws IOException {
if (txt != null) {
//String escapedText = escapeAttributeEntities(txt);
writer.write(txt);
}
}
.......
}
直接注释了原码中的//StringescapedText=escapeAttributeEntities(txt);
就完美解决了。
如何去掉用dom4j生成的XML文档中的
根据你所遇到的情况,有几种可能的办法: 一、读入的或从别的应用/模块/接口得到的xml原始文件/流/字符串: 去掉第一行,或者搜出这段PI指令,滤掉。 二、读入的或从别的应用/模块/接口获得的xml,已经解析为dom object: 获得root element,detach,就可以把根节点从document对象上摘了下来。 剩下的只是一个普通的element,得到其xml 表现形式即可。 三、自己生成的dom对象: 不生成document对象即可
dom4j生成xml文件时总是报系统找不到路径,不知道怎么解决
专业的话 至少贴个代码出来或者截图吧,哥们? 一般你生成xml文件的时候,肯定需要在代码中这样操作: //将生成的xml文件保存在"F:/text.xml"文件中 FileWriter fw = new FileWriter("F:/text.xml"); 你肯定是缺少有效路径。 代码总汇一下: //将生成的xml文件保存在"F:/text.xml"文件中 FileWriter fw = new FileWriter("F:/text.xml"); fw.write(document.asXML()); fw.flush(); fw.close();
我用dom4j创建了一个xml文档,没有错误,但运行没有结果,哪位高手指点一下
public class HostIP { private static void changeXML(String location) {
String hostip = "192.168.0.1"; //创建docunment对象 Document document = DocumentHelper.createDocument(); //创建根节点 Element hostIPElement = document.addElement("HostIP"); hostIPElement.setText(hostip); try { //new FileWriter(new File("HostIP.xml")), 没用你的写法 FileOutputStream fileOutputStream = new FileOutputStream(location); OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileOutputStream,"UTF-8"); OutputFormat fmt = OutputFormat.createPrettyPrint(); fmt.setEncoding("utf-8"); XMLWriter writer = new XMLWriter(outputStreamWriter,fmt); writer.write(document); writer.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }
public static void main(String[] args) { //传保存路径 String location = "C:/test/HostIP.xml"; changeXML(location); } } 这个是我比着你的改的,可以用。你看看吧 晕,main()方法都没有怎么运行 1 最后一个括号前加入 public static void main(String args[]) { new HostIP().changeXML(); } 2 你的程序里就没有输出语句加入main()方法你也看到的是白的 想看结果加入 System.out.println(document.asXML()); 其实你应该生成了的,你刷新试一下,或者文件路径写成绝对路径。
|