学习王昭珽老师的心得体会!
xml部分
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<
书架>
<书 出版社 = "湖北文理学院">
<书名 >java就业指导教程</书名>
<作者>张孝祥</作者>
<售价>38元</售价>
<内部价>15.00元</内部价>
<书名 >java就业指导教程</书名>
<作者>张孝祥</作者>
<售价>38元</售价>
<内部价>15.00元</内部价>
</书>
<书>
<书名 >javaScripe网页开发</书名>
<作者>毕向东</作者>
<售价>28.00</售价>
</书>
</书架>
JAVA代码部分
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
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;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
//注意包的引入
public class JaxpDomDemo {
//利用jaxp进行dom解析
/**
* @param args
* @throws ParserConfigurationException
*/
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
//*得到解析工厂DocumentBuilderFactory
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
//*得到解析器DocumentBuilder
DocumentBuilder builder = factory.newDocumentBuilder();
//解析指定的xml文档,得到代表内存的Dom树的Document的对象
Document document = builder.parse("src/book.xml");
test8(document);
}
//利用jaxp进行dom解析
/**
* @param args
* @throws ParserConfigurationException
*/
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
//*得到解析工厂DocumentBuilderFactory
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
//*得到解析器DocumentBuilder
DocumentBuilder builder = factory.newDocumentBuilder();
//解析指定的xml文档,得到代表内存的Dom树的Document的对象
Document document = builder.parse("src/book.xml");
test8(document);
}
//----------------1.得到某个具体节点内容:打印第二本书的作者
public static void test1(Document document){
//根据标签的名称,获取所有的作者的元素
NodeList nl = document.getElementsByTagName("作者");
//按照索引取第二个元素
Node node = nl.item(1);//搜索所有的作者然后取第二个,他是按内容搜索,然后排列!
//获取该节点的内容,打印该元素的文本
String text = node.getTextContent();
System.out.println(text);
}
//----------------2.遍历所有元素的节点(递归)
public static void test2(Node node){
//判断当前节点是不是一个元素节点
if(node.getNodeType() == Node.ELEMENT_NODE){
//如果节点,则打印它的名称
System.out.println(node.getNodeName());
}
//获取该节点的孩子节点
NodeList nl = node.getChildNodes();
//确定孩子们的个数
int len = nl.getLength();
//递归遍历输出孩子们的个数
for(int i = 0;i < len;i++){
Node n = nl.item(i);
test2(n);
}
}
public static void test3(Document document) throws Exception{
//找到第一本书的售价
//并改变它的售价
NodeList nl3 = document.getElementsByTagName("售价");
//得到第一本书的“售价“的节点
Node text3 = nl3.item(0);
//设置改变节点的内容
text3.setTextContent("38.00元");
//然后将改变后的dom树输入book.xml中
TransformerFactory factory = TransformerFactory.newInstance();
Transformer ts = factory.newTransformer();//将改变后的document 的树转到xml文件里
ts.transform(new DOMSource(document),new StreamResult("src/book.xml"));
System.out.println(text3.getTextContent());
}
public static void test4(Document document)throws Exception{
//创建一个新的元素并设置起主题内容
Element e = document.createElement("内部价");
//找到第一本书
e.setTextContent("15.00元");
//挂接到第一本书上
Node firstNode = document.getElementsByTagName("书").item(0);
firstNode.appendChild(e);
//然后将新添加后的dom树输入book.xml中
TransformerFactory factory = TransformerFactory.newInstance();
Transformer ts = factory.newTransformer();//将改变后的document 的树转到xml文件里
ts.transform(new DOMSource(document),new StreamResult("src/book.xml"));
}
//------------5.向指定元素增加同级元素节点
public static void test5(Document document)throws Exception{
//增加一个批发价
Element e = document.createElement("批发价");
//找到第一本书
e.setTextContent("8.00元");
//在第一本书的售价前挂接一本批发价
Node firstNode = document.getElementsByTagName("售价").item(0);
//新添加的节点一定要在父元素的之后插入插入节点
firstNode.getParentNode().insertBefore(e,firstNode);
//然后将新添加后的dom树输入book.xml中
TransformerFactory factory = TransformerFactory.newInstance();
Transformer ts = factory.newTransformer();//将改变后的document 的树转到xml文件里
ts.transform(new DOMSource(document),new StreamResult("src/book.xml"));
}
//-----------------6.删除指定元素
public static void test6(Document document)throws Exception{
Node find1 = document.getElementsByTagName("批发价").item(0);
//找到要删除的节点,然后用爸爸删除
find1.getParentNode().removeChild(find1);
//然后将新添加后的dom树输入book.xml中
TransformerFactory factory = TransformerFactory.newInstance();
Transformer ts = factory.newTransformer();//将改变后的document 的树转到xml文件里
ts.transform(new DOMSource(document),new StreamResult("src/book.xml"));
}
public static void test7(Document document)throws Exception{
//找到要添加节点的属性
Node find2 = document.getElementsByTagName("书").item(0);
//打印他的属性
Element e = (Element) find2;//书才有的属性(Element, node不具有属性)
System.out.println(e.getAttribute("出版社")+" 出版社");
}
public static void test8(Document document)throws Exception{
//找到要添加节点的属性
Node find2 = document.getElementsByTagName("书").item(1);
//打印他的属性
Element e = (Element) find2;//书才有的属性(Element, node不具有属性)
e.setAttribute("出版社","原襄樊学院");
//然后将新添加后的dom树输入book.xml中
TransformerFactory factory = TransformerFactory.newInstance();
Transformer ts = factory.newTransformer();//将改变后的document 的树转到xml文件里
ts.transform(new DOMSource(document),new StreamResult("src/book.xml"));
}
}
//得到的启示:看视频一定要认真,在认真,注意消化知识点, //理解什么意思,不要懒惰,以最佳的状态去听讲, //可以慢下来,注意好每一个细节操作