標籤:
一、本次總結用到的xml文本
1、 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- 引進dtd檔案的標籤 --><!-- <!DOCTYPE 書架 SYSTEM "book.dtd"> -->
<書架>
<書 ISBN="a" 出版社="人民出版社">
<書名>三國演義</書名>
<作者>羅貫中</作者>
<批發價>500¥</批發價>
<售價>100$</售價>
</書>
<書 ISBN="b" 出版社="人民出版社">
<書名>西遊記</書名>
<作者>吳承恩</作者>
<售價>55¥</售價>
</書>
</書架>
二、利用jaxp進行DOM的解析方法
1、首先獲得解析工廠DOcumentBuilderFactory
javax.xml.parsers 類
**DocumentBuilderFactory:定義工廠API,使應用程式能夠從xml文檔擷取產生DOM對象的解析器。
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
**newInstance()方法:擷取DocumentBuilderFactory的新實類。此static方法建立一個新的工廠實類。
2、得到解析器DocumentBuilder
類 DocumentBuilder
**定義API,使其從xml文檔中DOM文檔實類。應用程式員可以從xml擷取一個Document
DocumentBuilder builder = factory.newDocumentBuilder();
**newDocumentBuilder:使用當前配置的參數建立一個新的DocumentBuilder實類。
3、解析制定的xml文檔。得到代表記憶體的Dom樹的Document對象
Document document = builder.parse("src/book.xml");
**builder.parse()方法:將給定輸入源的內容解析為一個xml文檔。並返回一個新的DOM document對象
三、得到某個具體節點的內容:列如:列印第二本書的作者
1、根據標籤的內容擷取所有的作者名稱
NodeList nodelist=document.getElementsBytagName()
NodeList:介面提供對節點的有序集合的抽象
2、按照索引擷取第二個作者元素
Node node=nodelist.item(1);
3、列印該元素的文本
String text=node.getTextContent();
System.out.println(text);
四、遍曆所有的元素節點:列印元素的節點名稱
1、判斷當前節點是否為一個元素節點
short nd=node.getNodeType();
if(nd==Node.ELEMENT_NODE){
如果是:列印元素節點的名稱
system.out.println(node.getNodeName());
}
如果不是找到他們的孩子節點
NodeList nodelist=node.getChildNodes();
int length=nodelist.getLength();//擷取孩子節點的長度
for(int 1=0;i<length;i++){
//遍曆孩子節點進行遞迴
Node n=nodelist.item(i);
test2(n);
}
五、修改元素節點的主題內容
1、列如:找到第一本書的售價
NodeList nodelist = docuement.getElementsByTagName("售價");
2、設定其主題內容
Node no=nodelist.item(0);//得到他的節點
no.setTextContent("100$");//設定他的主題內容
3、把記憶體中的document樹寫回到xml中
TransformerFactory factory = TransformerTactory.newInstance();
Transformer tr = factory.newTransformer();
tr.transformer(new DOMSource(doument),new StreamResult("src/book.xml"));
六、向指定元素節點中增加子項目節點
1、建立一個新元素並設定其內容
Element element = Element.createElement("內部價");
設定他的常值內容
element.setTexstContent("300$");
2、找到第一本書
NodeList nodelist = document.getElementsByTagName("書");
Node first =nodelist.item(0);
3、把新節點掛到第一本書上
first.appendChild(element)
4、把記憶體中的document樹寫會到xml中
TransformerFactory factory = TransformerFactory.newInstace();
Transformer tr=factory.newTransformer();
tr.transformer(new DOMSource(document),new StreamResult("src/book.xml"));
七、向指定的元素節點上增加同級元素節點:列如:在第一本書的售價前面添加批發價
1、建立並設定其主題內容
Element element = documcnet.createElement("批發價");
element.setTextContent("500$");
2、找到第一本書的售價
NodeList nodelist = document.getElementsByTagName("售價");
Node node=nodelist.item(0);
3、在售價的前面添加建立的元素:
***增加子節點,一定要使用父元素進行
node.getParentNode().insertBefore(element,node);
4、把記憶體中的document樹寫回到xml中
TransformerFactory factory = TransformerFactory.newInstance();
Transformer tr = factory.newTransformer()
tr.transformer(new DOMSource(document),new StreamResult("src/book.xml"));
八、刪除指定元素的節點
1、刪除子節點需要父節點進行刪除
列如:找到內部價進行刪除
NodeList nodelist = document.getElementsByTagName("內部價");
Node node = nodelist.item(0);
node.getPraentNode().removeChhild(n);
2、把記憶體的document樹寫回到xml中
TransformerFactory factory=TransformerFactory.newInstance();
Transformer tr=factory.Transformer();
tr.transformer(new DOMSource(document),new StreamResult("src/book.xml"));
九、操作xml元素屬性:列印第一本書的出版社
1、首先得到第一本
Node node = document.getElementsByTagName("書").item(0);
2、列印指定屬性的值
Element e = (Element)n;
system.out.println(e.getAttribute("出版社"));
Document樹的解析方法