分享

Java开发笔记 — JAXP DOM

 openwudi 2010-10-08

对于DOM可以说已经不算陌生,DOM (Document Object Model,文档对象模型)定义访问和操作文档的一套标准方法。XML DOM和HTML DOM原理是一样的,所以我将不过多的介绍DOM的内容。其实DOM的宗旨就是所有的内容都是节点,这是我个人的理解。

什么是JAXP呢?JAXP是Java API for XML Processing的英文字头缩写,中文含义是:用于XML文档处理的使用Java语言编写的编程接口。JAXP支持DOM、SAX、XSLT等标准。

以下将介绍JAXP DOM的常见操作:
一、对DOM操作必须的
       ⒈创建解释器工厂DocumentBuilderFactory,使用newInstance() 创建一个新的实例。
       ⒉根据解释器工厂创建解释器DocumentBuilder,使用工厂实例的newDocumentBuilder() 方法创建解释器。
       ⒊得到Document对象,通过解释器的parse(File f) 方法,得到XML文件的Document。

Java语言:

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document document = db.parse(new File("src/stu.xml"));

二、读取XML文件下的元素
       【壹】读取XML文件下某个标签的内容
       ⒈取得Docment对象。
       ⒉得到标签对应的节点对象(元素对象)document.getElementByTagName(“节点名称”).item(“第几个节点”)。
       ⒊读取节点对象的内容element.getTextContent();

Java语言:

Element e=document.getDocumentElement();
Element name=(Element) e.getElementsByTagName("名字").item(1);
String text = name.getTextContent();

       【贰】读取XML文件下某个标签的属性
       ⒈取得Docment对象。
       ⒉得到标签对应的节点对象(元素对象)document.getElementByTagName(“节点名称”).item(“第几个节点”)。
       ⒊读取节点对象的内容element.getAttribute();

Java语言:

Element e=document.getDocumentElement();
Element name=(Element) e.getElementsByTagName("名字").item(1);
String Attribute = name.getAttribute("属性名称");

三、使用JAXP DOM对XML进行添加操作
       【壹】添加标签
       ⒈取得Docment对象。
       ⒉创建节点元素document.createElement(“标签名”)
       ⒊添加标签document.appendChild(“创建的标签”)
       ⒋更新被更改的节点输入到外部文件
       *(1)得到转换器工厂TransformerFactory,使用TransformerFactory.newInstance()。
       *(2)得到转换器Transformer,使用转换器工厂的newTransformer()方法。
       *(3)转换器转换transform(new DOMSource(document),new StreamResult(new File(“src/xxx.xml”)))。

Java语言:

Element stu=document.createElement("学生");
Element name=document.createElement("名字");
name.setTextContent("贾宝玉");
stu.appendChild(name);
//把stu 挂到 根元素下
document.getDocumentElement().appendChild(stu);
//更新文档
//1.得打TransformerFactory
TransformerFactory tff=TransformerFactory.newInstance();
//2.得到一个转化器
Transformer tf=tff.newTransformer();
//3.转化
tf.transform(new DOMSource(document), new StreamResult(new File("src/myClass.xml")));

       【贰】标签添加属性
       ⒈取得Docment对象。
       ⒉得到标签对应的节点对象(元素对象)document.getElementByTagName(“节点名称”).item(“第几个节点”)。
       ⒊设置节点对象的属性setAttribute(“sex”, “男”)。
       ⒋更新被更改的节点输入到外部文件

Java语言:

//得到第三个学生的节点对象
Element e=(Element) doc.getElementsByTagName("学生").item(2);
e.setAttribute("sex", "男");//添加属性
//这是添加属性的第二种方法.
Attr att=doc.createAttribute("sex2");
att.setTextContent("女");
e.setAttributeNode(att);
//更新
TransformerFactory tff=TransformerFactory.newInstance();
Transformer tf=tff.newTransformer();
tf.transform(new DOMSource(doc), new StreamResult(new File("src/myClass.xml")));

三、使用JAXP DOM对XML进行删除操作
       【壹】删除标签
       ⒈取得Docment对象。
       ⒉得到要删除标签对应的节点对象(元素对象)document.getElementByTagName(“节点名称”).item(“第几个节点”)。
       ⒊通过父节点删除标签e.getParentNode().removeChild(e)。
       ⒋更新被更改的节点输入到外部文件。

Java语言:

//得到第三个学生的节点对象
Element e=(Element) doc.getElementsByTagName("学生").item(2);
doc.getDocumentElement().removeChild(e);
//我们在删除某个节点的时候,可以通过 得打其父节点,然后将其删除.
e.getParentNode().removeChild(e);
TransformerFactory tff=TransformerFactory.newInstance();
Transformer tf=tff.newTransformer();
tf.transform(new DOMSource(doc), new StreamResult(new File("src/myClass.xml")));

       【贰】删除标签属性
       ⒈取得Docment对象。
       ⒉得到要删除标签对应的节点对象(元素对象)document.getElementByTagName(“节点名称”).item(“第几个节点”)。
       ⒊删除标签属性e.removeAttribute(“属性名”);
       ⒋更新被更改的节点输入到外部文件

四、更新
       【壹】更新标签setTextContent(“内容”)。
       【贰】更新标签属性setAttribute(“属性名”, 属性值 )

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多