您的位置:首页 > 其它

解析XML文件总结

2017-07-20 19:13 218 查看
解析XML文件是JAVA编程中很重要的一个问题,这里总结一下,稍微有点乱

public class Main {

public static void main(String[] args) throws DocumentException, IOException {
// write your code here
//导入jar包
//File - ProjectStructure -> 左侧Modules
//-> +号, JARS or  ...  ->找到jar包并添加
//dome1();
// dome2();
//dome5();
//  demo6();
demo7();

}

//解析
//常用的获取内容的方法
public static void dome1() throws DocumentException {
SAXReader sax = new SAXReader();
File file = new File("/Users/dllo/Documents/class_11XML/src/com/company/student.xml");
//读取文件内容,将内容以Document形式呈现
Document document = sax.read(file);
//获取根节点(students)
Element root = document.getRootElement();
//获取节点名称-(students)
System.out.println(root.getName());
//获取节点内容 - (无)
System.out.println(root.getTextTrim());
//3 获取子节点
List<Element> elements = root.elements();
//打印子节点的名字
System.out.println("子节点的名称" + elements.get(1).getName());
//打印子节点的内容
System.out.println("子节点的内容" + elements.get(1).getTextTrim());

//"孙子节点"获取student1的子节点
List<Element> subEs = elements.get(0).elements();
//打印student1的子节点的名字(name)
System.out.println("孙子节点的名称" + elements.get(0).getName());
//打印student1的子节点的内容(苯平)
System.out.println("孙子节点的内容" + elements.get(0).getTextTrim());

}

//练习:使用for 循环 ,for-each循环,打印xml文件中
//所有标签的名字及内容
//提示 循环嵌套
public static void dome2() throws DocumentException {
SAXReader sax = new SAXReader();
File file = new File("/Users/dllo/Documents/class_11XML/src/com/company/student.xml");
//读取文件内容,将内容以Document形式呈现
Document document = sax.read(file);
//获取根节点(students)
Element root = document.getRootElement();
getNodes(root);


// //获取节点内容 - (无)

// System.out.println(root.getTextTrim());

// //3 获取子节点

// List elements = root.elements();

// //打印子节点的名字

// for (int i = 0;i < 2;i++) {

// System.out.println(“子节点的名称” + elements.get(i).getName());

// //打印子节点的内容

// System.out.println(“子节点的内容” + elements.get(i).getTextTrim());

// for (int j = 0; j <3;j ++){

// List subEs = elements.get(j).elements();

// System.out.println(“孙子节点的名称” + elements.get(i).getName());

// //打印student1的子节点的内容(苯平)

// System.out.println(“孙子节点的内容” + elements.get(i).getTextTrim());

// System.out.println(“孙子节点的名称” + elements.get(i).getyear());

// //打印student1的子节点的内容(苯平)

// System.out.println(“孙子节点的内容” + elements.get(i).getTextTrim());

// System.out.println(“孙子节点的名称” + elements.get(i).getsex());

// //打印student1的子节点的内容(苯平)

// System.out.println(“孙子节点的内容” + elements.get(i).getTextTrim());

// }

// }

// Listelements = root.elements();

// for (Element e:elements){

// System.out.println(“子节点的名称” + e.getName());

//// //打印子节点的内容

// System.out.println(“子节点的内容” + e.getTextTrim());

// ListsubEs = e.elements();

// for (Element e1:subEs){

// System.out.println(“孙子节点的名称” + e1.getName());

// //打印student1的子节点的内容(苯平)

// System.out.println(“孙子节点的内容” + e1.getTextTrim());

// }

// }

}

//通用遍历方式-递归
//参数为任意需要遍历的节点
public static void getNodes(Element node) {
System.out.println("当前节点为" + node.getName());
System.out.println("当前节点内容" + node.getTextTrim());
//获取当前节点所有属性
List<Attribute> attr = node.attributes();
for (Attribute a : attr) {
System.out.println("属性名称" + a.getName());
System.out.println("属性内容" + a.getValue());
}
//获取子节点
List<Element> elements = node.elements();
//遍历所有的子节点
for (Element e : elements) {
//递归,调用自己
getNodes(e);
}
}

public static void demo3() throws DocumentException {
SAXReader sax = new SAXReader();
File file = new File("/Users/dllo/Documents/class_11XML/src/com/company/student.xml");
//读取文件内容,将内容以Document形式呈现
Document document = sax.read(file);
//获取根节点(students)
Element root = document.getRootElement();
List<Element> elements = root.elements();
//获取student1节点
Element stu1 = elements.get(0);

//通过名字直接获取标签
//注意 只能获取一级子标签
Element e = stu1.element("name");
System.out.println(e.getName());
System.out.println(e.getTextTrim());

//通过名字直接获取值
String str = stu1.elementText("name");
System.out.println(str);
Attribute at = stu1.attribute("id");
System.out.println(at.getName());
System.out.println(at.getValue());

//通过名字直接获取属性值
String str1 = stu1.attributeValue("id");
System.out.println(str1);

//stu1.element(); 获取 下一级子节点
//当前节点的所有属性
List<Attribute> attr = stu1.attributes();
//属性名(id)
System.out.println("属性名" + attr.get(0).getName());
//属性值(001)
System.out.println("属性值" + attr.get(0).getValue());
}

//属性的增删改查
public static void dome5() throws DocumentException, IOException {
SAXReader sax = new SAXReader();
File file = new File("/Users/dllo/Documents/class_11XML/src/com/company/student.xml");
//读取文件内容,将内容以Document形式呈现
Document document = sax.read(file);
//获取根节点(students)
Element root = document.getRootElement();
//获取节点名称-(students)
System.out.println(root.getName());

//先获取有属性的节点student1
Element stu1E = root.element("student1");
//获取属性
Attribute idA = stu1E.attribute("id");
//删除属性
stu1E.remove(idA);
//添加 修改属性
//若参数1存在 即修改
//不存在 就添加
stu1E.addAttribute("id", "新id值");
//输出改变后的student1
getNodes(stu1E);

// 节点的增删改查


// public static void dome6() throws DocumentException {

// SAXReader sax = new SAXReader();

// File file = new File(“/Users/dllo/Documents/class_11XML/src/com/company/student.xml”);

// //读取文件内容,将内容以Document形式呈现

// Document document = sax.read(file);

// //获取根节点(students)

// Element root = document.getRootElement();

//

//添加新的节点phone

Element phoneE = stu1E.addElement(“phone”);

//为节点设置值

phoneE.setText(“133xxxxxxx”);

getNodes(stu1E);

//删除节点
Element nameE = stu1E.element("name");


// stu1E.remove(nameE);

//修改
nameE.setText("zhangran");

getNodes(stu1E);

writeToFile(document);
}

//将改动写入到文件中
public static void writeToFile(Document document) throws DocumentException, IOException {
//若有中文字符
//输出格式


// OutputFormat format = OutputFormat.createPrettyPrint();

// //设置编码

// format.setEncoding(“GBK”);

// File file = new File(“/Users/dllo/Documents/class_11XML/src/com/company/student.xml”);

// FileWriter fileWriter = new FileWriter(file);

// XMLWriter xmlWriter = new XMLWriter(fileWriter, format);

// xmlWriter.write(document);

// xmlWriter.close();

OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("UTF-8");
XMLWriter xmlWriter = new XMLWriter(new FileOutputStream("src/com/company/student.xml"), format);
xmlWriter.wri
4000
te(document);
xmlWriter.close();
}

//将字符串转化为XML
public static void demo6() throws DocumentException, IOException {
String text =
"<members><member>aaa</member></members>";
Document document = DocumentHelper.parseText(text);
writeToFile(document);
}

//将XML转化为字符串
public static void demo7() throws DocumentException {
SAXReader sax = new SAXReader();
File file = new File("/Users/dllo/Documents/class_11XML/src/com/company/student.xml");
//读取文件内容,将内容以Document形式呈现
Document document = sax.read(file);
//获取根节点(students)
Element root = document.getRootElement();
//将root根节点整体转化为字符串
String docStr =document.asXML();
System.out.println(docStr);

//将某一个节点转化为字符串
String stu1 = root.element("student1").asXML();
System.out.println(stu1);
}


}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: