一.jaxp开发包对xml文件的解析,jaxp使用的解析器是IBM公司的xerces,IBM将此解析器捐献给了apache。
/**@description xml文件*/
<?xml version="1.0" encoding="UTF-8"?><书架>
<书>
<书名 name="abc">JavaWEB</书名>
<作者>李文慧</作者>
<售价>100.00元</售价>
</书>
<书>
<书名>程序人生</书名>
<作者>小刚</作者>
<售价>28.00元</售价>
</书>
<s>aaaa</s>
</书架>
/***
* @descriptin jaxp解析xml文档,Java自带的开发包是使用的IBM公司写的解析器xerces,但是此解析器IBM捐献 给Apache
* @time 2012-10-30 17:02:00
* @author Roinli
*/
public class Demo1 {
public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException, TransformerException {
// 创建工厂对象
DocumentBuilderFactory newInstance = DocumentBuilderFactory.newInstance();
// 通过工厂获得解析器
DocumentBuilder builder = newInstance.newDocumentBuilder();
System.out.println(builder);
// 对xml文档解析
Document document = builder.parse(new File("src/cn//aisino//jaxp//book.xml"));
//findNode(document);// 查找节点文本值
//findNodeAtrr(document); // 查找属性值
//addNode(document);
//addNode1(document);
//deleteNode(document);
//deleteNode1(document);
//editNode1(document);
//editNodeAttr(document);
getALLNode(document.getElementsByTagName("书").item(0));
}
// 对文档增删改查
// 查找 <书名>Java就业培训教程</书名>
public static void findNode(Document document){
NodeList nodeList =document.getElementsByTagName("书名");
Node node = nodeList.item(0);
System.out.println(node.getTextContent());
}
// 查找属性<书名 name="abc">Java就业培训教程</书名>
public static void findNodeAtrr(Document document){
Node node =document.getElementsByTagName("书名").item(0);
if(node.getNodeType() == node.ELEMENT_NODE){
Element element = (org.w3c.dom.Element)node;
String attrvalue = element.getAttribute("name");
System.out.println(attrvalue);
}
}
// 增加节点,在后面追加
public static void addNode(Document document) throws TransformerException{
Node price = document.createElement("售价");
price.setTextContent("59元");
Node book = document.getElementsByTagName("书").item(0);
book.appendChild(price);
// 更新内存中document对象写入到xml文档
TransformerFactory transformer = TransformerFactory.newInstance(); //Transaction
Transformer newTransformer = transformer.newTransformer();
// 将dom中的数据转换到book.xml文件中
newTransformer.transform(new DOMSource(document),new StreamResult(new File("src/cn//aisino//jaxp//book.xml")));
}
// 增加节点 在指定位置添加节点
public static void addNode1(Document document) throws TransformerException{
Node price = document.createElement("售价");
price.setTextContent("59元");
Node book = document.getElementsByTagName("书").item(0);
// 增加节点 在指定位置添加节点
book.insertBefore(price, document.getElementsByTagName("售价").item(0));
// 更新内存中document对象写入到xml文档
TransformerFactory transformer = TransformerFactory.newInstance(); //Transaction
Transformer newTransformer = transformer.newTransformer();
// 将dom中的数据转换到book.xml文件中
newTransformer.transform(new DOMSource(document),new StreamResult(new File("src/cn//aisino//jaxp//book.xml")));
}
// 删除节点
public static void deleteNode(Document document) throws TransformerException{
Node book = document.getElementsByTagName("书").item(0);
book.removeChild(document.getElementsByTagName("售价").item(0));
// 更新内存中document对象写入到xml文档
TransformerFactory transformer = TransformerFactory.newInstance(); //Transaction
Transformer newTransformer = transformer.newTransformer();
// 将dom中的数据转换到book.xml文件中
newTransformer.transform(new DOMSource(document),new StreamResult(new File("src/cn//aisino//jaxp//book.xml")));
}
// 删除节点 优雅方式
public static void deleteNode1(Document document) throws TransformerException{
Node price = document.getElementsByTagName("售价").item(0);
price.getParentNode().removeChild(price);;
// 更新内存中document对象
TransformerFactory transformer = TransformerFactory.newInstance(); //Transaction
Transformer newTransformer = transformer.newTransformer();
// 将dom中的数据转换到book.xml文件中
newTransformer.transform(new DOMSource(document),new StreamResult(new File("src/cn//aisino//jaxp//book.xml")));
}
// 修改节点 将书价格节点值改成2
public static void editNode1(Document document) throws TransformerException{
Node price = document.getElementsByTagName("售价").item(0);
price.setTextContent("100.00元");
// 更新内存中document对象
TransformerFactory transformer = TransformerFactory.newInstance(); //Transaction
Transformer newTransformer = transformer.newTransformer();
// 将dom中的数据转换到book.xml文件中
newTransformer.transform(new DOMSource(document),new StreamResult(new File("src/cn//aisino//jaxp//book.xml")));
}
// 修改节点 属性值
public static void editNodeAttr(Document document) throws TransformerException{
Node book = document.getElementsByTagName("书名").item(0);
if(book.getNodeType() == book.ELEMENT_NODE){
Element element = (org.w3c.dom.Element)book;
Attr attributeNode = element.getAttributeNode("name");
attributeNode.setValue("yyyyy");
}
// 更新内存中document对象
TransformerFactory transformer = TransformerFactory.newInstance(); //Transaction
Transformer newTransformer = transformer.newTransformer();
// 将dom中的数据转换到book.xml文件中
newTransformer.transform(new DOMSource(document),new StreamResult(new File("src/cn//aisino//jaxp//book.xml")));
}
// 遍历xml文档的所有内容 "递归"
public static void getALLNode(Node node){
if(node.getNodeType() == Node.ELEMENT_NODE){
//System.out.println(node.getNodeName());
String content = node.getTextContent().trim();
if(!"".equals(content)){
System.out.println(content.trim());
}
NodeList childNodes = node.getChildNodes();
for(int i=0;i < childNodes.getLength();i++){
Node item = childNodes.item(i);
getALLNode(item);
}
}
}
}