课后练习1:
<?xml version="1.0" encoding="UTF-8"?>
<scores>
<student id="1">
<name>牛猪圈</name>
<course>java</course>
<score>88</score>
</student>
<student id="2">
<name>周日天</name>
<course>python</course>
<score>66</score>
</student>
</scores>
课后练习2:
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.dom4j.Node;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
public class ShowInfo {
public static void main(String[] args) {
DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
try {
// 创建DOM解析器对象
DocumentBuilder builder = builderFactory.newDocumentBuilder();
Document document = builder.parse("score.xml"); // 解析score.xml文件
NodeList list = document.getElementsByTagName("student"); // 读取scores
for (int i = 0; i < list.getLength(); i++) {
Element element = (Element) list.item(i);
String id = element.getAttribute("id"); // 获得student的属性值
// 获取student节点下的所有元素
NodeList list2 = element.getChildNodes();
System.out.println("ID:"+id);
for (int j = 0; j < list2.getLength(); j++) {
if ((list2.item(j).getNodeType() == Node.ELEMENT_NODE)) {
System.out.println(list2.item(j).getNodeName()+":"+list2.item(j).getFirstChild().getNodeValue());
}
}
System.out.println("");
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
}
课后练习3:
import java.io.FileOutputStream;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class Modification {
DocumentBuilderFactory builderFactory = null; //DOM解析器工厂对象
Document document = null; //DOM数对象
NodeList list = null; //节点集合
DocumentBuilder builder = null;
public static void main(String[] args) {
Modification modification = new Modification();
// modification.delete();
// modification.amend();
// modification.add();
}
/**
* 删除id为1的节点
*/
public void delete() {
builderFactory = DocumentBuilderFactory.newInstance();
try {
builder = builderFactory.newDocumentBuilder();
document = builder.parse("score.xml");
list = document.getElementsByTagName("student");
for (int i = 0; i < list.getLength(); i++) {
Node node = list.item(i);
Element element = (Element) list.item(i);
String id = element.getAttribute("id");
if (id.equals("1") ) { //如果id为1
NodeList list2 = node.getChildNodes(); //拿到id为1的student的所有子节点
for (int j = 0; j< list2.getLength(); j++) {
Node node2 = list2.item(j);
if ((node2.getNodeType() == Node.ELEMENT_NODE) && (node2.getNodeName().equals("score"))) { //如果是score子节点
Element element2 = (Element) node2;
node.removeChild(element2);
}
}
}
}
save("NewScore.xml");
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
/**
* 修改id为2的成绩为60
*/
public void amend() {
builderFactory = DocumentBuilderFactory.newInstance();
try {
builder = builderFactory.newDocumentBuilder();
document = builder.parse("score.xml");
list = document.getElementsByTagName("score");
Element element = (Element) list.item(1);
element.setTextContent("60分");
save("AmendScore.xml"); // 保存xml文件
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
/**
* 添加id为2的成绩为60方法
*/
public void add() {
builderFactory = DocumentBuilderFactory.newInstance();
try {
builder = builderFactory.newDocumentBuilder();
document = builder.parse("score.xml");
list = document.getElementsByTagName("scores");
//新建student节点
Element element = document.createElement("student");
element.setAttribute("id", "3");
//新建name节点
Element element2 = document.createElement("name");
element2.setTextContent("蒋宝宝");
//新建course节点
Element element3 = document.createElement("course");
element3.setTextContent("java");
//创建score节点
Element element4 = document.createElement("score");
element4.setTextContent("88");
//添加student节点里面的子节点
element.appendChild(element2);
element.appendChild(element3);
element.appendChild(element4);
list.item(0).appendChild(element); //添加student节点
save("AddScore.xml"); // 保存xml文件
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
/**
* 保存修改后的xml文件
*/
public void save(String path) {
TransformerFactory factory = TransformerFactory.newInstance();
try {
Transformer transformer = factory.newTransformer();
DOMSource domSource = new DOMSource(document);
transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
StreamResult result = new StreamResult(new FileOutputStream(path));
transformer.transform(domSource, result);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
}
课后练习4:
import java.io.File;
import java.util.Iterator;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class DOM4jShowInfo {
Document document = null; //DOM4j下的DOM树对象
/**
* 加载DOM树
*/
public void loadDOM() {
SAXReader reader = new SAXReader();
try {
document = reader.read(new File("score.xml"));
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 显示XML文件
*/
public void showInfoXML() {
Element root = document.getRootElement(); //拿到根节点
Iterator rootIterator = root.elementIterator();
while (rootIterator.hasNext()) { //循环student
Element studentElement = (Element) rootIterator.next();
String idStr = studentElement.attributeValue("id"); //id的属性值;
System.out.println("id:"+idStr);
Iterator studentChild = studentElement.elementIterator(); //student下的字节点
while (studentChild.hasNext()) { //循环student下的子节点
Element stuChildElement = (Element) studentChild.next();
String nodeName = stuChildElement.getName(); //子节点名
String nodeText = stuChildElement.getText(); //子节点内容
System.out.println(nodeName+ ":"+nodeText);
}
System.out.println("");
}
}
public static void main(String [] args) {
DOM4jShowInfo dom = new DOM4jShowInfo();
dom.loadDOM();
dom.showInfoXML();
}
}
高级特性 第六章
最新推荐文章于 2024-02-20 16:16:31 发布