java生成與解析xml

/**node

* 建立xml文件、解析與生成xml文件app

* @param  argsdom

*/測試

public DocumentBuilder getDocumentBuilder(){ui

// 建立一個DocumentBUIDERfACTORY的對象spa

DocumentBuilderFactory def = DocumentBuilderFactory.newInstance();.net

// 建立一個DocumentBrilder對象orm

DocumentBuilder db = null;xml

try {對象

db = def.newDocumentBuilder();

} catch (ParserConfigurationException e) {

e.printStackTrace();

}

return db;

}


/**

* 生成xml文件

*/

public void createXML(){

DocumentBuilder db = getDocumentBuilder();

Document document = db.newDocument();

Element bookstore = document.createElement("bookStore");

for(int i = 1;i<=5;i++)

{

/**

* 節點類型 :NodeType  named constant nodename的返回值  nodeValue的返回值

* Element 1ELEMENT_NODEelement name null

* Attr   2ATTRIBUTE_NODE屬性名稱屬性值

* Text   3   TEXT_NODE #test節點內容

*/

// 向bookstore 根節點中添加子節點book

Element book = document.createElement("book");

Element name = document.createElement("name");

Element price = document.createElement("price");

Element pubDate = document.createElement("pubDate");

book.setAttribute("id", i + "");


// name.setNodeValue("冰與火之歌");

/**

* Element 節點返回值爲null

*/

// price.setNodeValue("12美圓");

price.setTextContent("12美圓");

name.setTextContent("冰與火之歌");

book.appendChild(pubDate);

book.appendChild(price);

book.appendChild(name);

// 將book節點添加到bookstore根節點中

bookstore.appendChild(book);

}

// 將bookstore節點(已經包含了book)添加到dom樹中

document.appendChild(bookstore);

// 用來去掉xmlstandalone 屬性

document.setXmlStandalone(true);

// 建立TransformerFactory 對象

TransformerFactory tff = TransformerFactory.newInstance();

try {

//建立Transformer對象

Transformer tf = tff.newTransformer();

tf.setOutputProperty(OutputKeys.INDENT, "yes");

//tf.setOutputProperty(OutputKeys.STANDALONE, "false");

tf.transform(new DOMSource(document),new StreamResult(new File("book1.xml")));

} catch (TransformerConfigurationException e) {

e.printStackTrace();

} catch (TransformerException e) {

e.printStackTrace();

}

System.out.println();

}

public void xmlParser(){

try {

DocumentBuilder db = getDocumentBuilder();

// 經過DocumentBuilder對象的parser方法加載books.xml文件到當前項目下

Document document = db.parse("books.xml");

// 獲取全部book節點的集合

NodeList booklist = document.getElementsByTagName("book");

System.out.println("一共有" + booklist.getLength() + "本書");


for (int i = 0; i < booklist.getLength(); i++) {

// 桶過item(i)方法 獲取一個book節點,nodelist的索引值從o開始

System.out.println("下面開始遍歷第" + (i + 1) + "書的內容===========");

Node book = booklist.item(i);

// 獲取book節點的全部屬性的集合

NamedNodeMap attrs = book.getAttributes();

// 便利book的屬性

System.out.println("第" + (i + 1) + "本書共有" + attrs.getLength()

+ "個屬性");

for (int j = 0; j < attrs.getLength(); j++) {

// 經過item方法獲取book的每個屬性

Node attr = attrs.item(j);

// 獲取屬性名

System.out.println("屬性名:" + attr.getNodeName());

System.out.println("屬性值:" + attr.getNodeValue());

}


// 已知屬性值的狀況下能夠用Element 類型進行強制類型轉換和接收

// System.out.println("已知屬性值的前提下遍歷book節點的每個屬性");

// Element bk = (Element)booklist.item(i);

// String attrValue = bk.getAttribute("id");

// System.out.println("已知屬性名的前提下進行遍歷的結果"+attrValue);


// 遍歷book節點的子節點

NodeList childNodes = book.getChildNodes();

// 遍歷childNodes,目的獲取每一個節點的節點名和節點值

System.out.println("第" + (i + 1) + "本書工有"

+ childNodes.getLength() + "個子節點");

for (int k = 0; k < childNodes.getLength(); k++) {

// 遍歷每個子節點

// 獲取了element類型節點的節點名

if (childNodes.item(k).getNodeType() == Node.ELEMENT_NODE) {

System.out.print("第" + (k + 1) + "個節點名:"

+ childNodes.item(k).getNodeName());

// System.out.println(childNodes.item(k).getNodeName());

// System.out.println(childNodes.item(k).getNodeValue());

// 獲取element類型節點的節點值

System.out.println("--節點值是:"

+ childNodes.item(k).getFirstChild()

.getNodeValue());

// System.out.println("--節點值是:"+childNodes.item(k).getFirstChild().getTextContent());


}


}

System.out.println("結束遍歷第" + (i + 1) + "書的內容===========");


}


// booklist.getLength();

}catch (SAXException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

/**

* 測試

* @param  args

*/

public static void main(String[] args) {

DOMTest dtest = new DOMTest();

dtest.createXML();

}

相關文章
相關標籤/搜索