麻烦老师帮我检查一下代码还有注释是否有误
来源:3-4 自由编程
jia_蛙
2019-10-31 09:48:21
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plan SYSTEM "plan.dtd"> <teaching-plan> <!-- number 课程编号 --> <course number="1101"> <course-name>大学英语</course-name> <class-hour>36</class-hour> <exam-form>考试</exam-form> </course> <course number="1102"> <course-name>高等数学</course-name> <class-hour>70</class-hour> <exam-form>考试</exam-form> </course> <course number="1103"> <course-name>计算机应用基础</course-name> <class-hour>108</class-hour> <exam-form>上机考试</exam-form> </course> <course number="1104"> <course-name>大学体育</course-name> <class-hour>80</class-hour> <exam-form>室外体育馆</exam-form> </course> </teaching-plan>
package com.zhou.dom4j;
import java.util.List;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
//对XML进行读操作
public class PlanReader {
public void readXml() {
//1.首先获取xml文件路径
String file = "../xml/src/plan.xml";
//2.实例化SAXReader对象,该对象是读取XML文本的核心类
SAXReader reader = new SAXReader();
try {
//3. 使用reader方法对xml文件的路径进行解析,返回一个dom4j的顶级对象Document
Document document = reader.read(file);
//4. 通过getRootElement()方法获取到顶级对象的根节点 即teaching-plan节点
//返回一个Element对象 Element对象是用于包装dom4j所有的标签
Element root = document.getRootElement();
//5. 通过elements方法获取指定的标签集合
List<Element> employees = root.elements("course");
//6. 遍历该标签集合
for(Element employee: employees) {
//7.使用element方法获取唯一的子节点对象中的值
//方式1:先获取指定的子节点对象 然后再获取子节点对象中的文本
Element name = employee.element("course-name");
System.out.println("科目:"+name.getText());
//方式2:直接获取子节点对象中的文本
System.out.println("分数:" + employee.elementText("class-hour"));
System.out.println("考试类型:" + employee.elementText("exam-form"));
//8.通过attribute方法对节点的属性进行提取 返回一个 Attribute对象
Attribute att = employee.attribute("number");
//获取Attribute对象中的文本
System.out.println("科目编号:" + att.getText());
System.out.println();
}
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) {
PlanReader planReader = new PlanReader();
planReader.readXml();
}
}package com.zhou.dom4j;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
//对XML进行写操作
public class PlanWriter {
public void writeXml() {
//1.首先获取要写入的文件路径
String file ="../xml/src/plan.xml";
//2.实例化读取XML文件的核心类SAXReader类
SAXReader reader = new SAXReader();
try {
//3.使用read()方法读SAXReader对象进行解析,返回一个dom4j的顶级对象Document
Document document = reader.read(file);
//4.通过getRootElement()获取到顶级对象的根节点
Element root = document.getRootElement();
//5.使用写xml的核心方法 addElement()创建一个子节点
//运行完之后会在内存中幻剑一个全新的空的 course节点
Element course = root.addElement("course");
//6. 通过addAttribute()方法设置节点的属性
course.addAttribute("number", "1104");
//7. 设置course下的子节点并设置文本内容
//方式一
Element courseName = course.addElement("course-name");
courseName.setText("大学体育");
//方式二
course.addElement("class-hour").setText("80");;
course.addElement("exam-form").setText("室外体育馆");;
// 此时只是在内存中构建了这个DOM 我们还需将他写入到xml文件离去
//9. 将转换流转换成Writer对象 参数一:文件输出流对象 参数二:编码格式
Writer writer = new OutputStreamWriter(new FileOutputStream(file),"UTF-8");
//10.将document对象写入Writer对象中 并关闭流
document.write(writer);
writer.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) {
PlanWriter planWriter = new PlanWriter();
planWriter.writeXml();
}
}1回答
同学你好,代码完成的不错,注释也是正确的,但是有一个小建议,PlanWriter类中,方式二的代码后面添加一个结束分号就可以啦~如果添加两个,则第二个分号将会执行一个空语句,是没有实际意义的~
如:

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
相似问题