DOM(Document Object Moudule)使用一些特定的类和对象可以实现XML文件的处理,是W3C定义的标砖XML处理语法。
DOM树
DOM树是整个DOM解析处理的核心关键,所谓的DOM树核心的本意就在于讲一个指定的XML文件转换为内存中的树进行保存;
在XML解析处理过程之中,最大的借口为org.w3c.dom.Node
Node接口里面的几个主要的方法:
public Node apapendChild(Node newChild)throws DOMException追加新的子节点
public NodeList getChildNodes() 取得当前节点下的所有子节点
public Node getFirstChild() 取得当前节点下的第一个子节点
public String getNodeName() 取得节点名称
public String getNodeValue() throws DOMException 节点内容
public Node getParentNode() 取得当前节点的父节点
public String getTextContent() throws DOMException; 取得节点中的文本内容
publci Node removeChild(Node oldChild) throws DOMException; 删除当前节点中的指定子节点;
public void setNodeValue(String nodeValue)throws DOMException; 设置节点内容
public void setTextContent(String textContent) throws DMOException 设置节点文本内容
Node下的子接口中的方法:
1,元素子接口<Element>
public String getAttribute(String name) 取得该原色中的指定属性的内容;
public void setAttribute(String name,String value) throws DOMException 设置钙元素中的属性名称及内容;
public getElementsByTagName(String name) 取得指定元素中指定名称的所有子元素;
public String getTagName() 去得制定原色的标签名称
public void removeAttribute(String name) throws DMOException 删除指定元素指定的属性信息
2,描述整个文档的接口:Document,一个Document中会包含有多个Element,在Document接口里定义的方法:
public Element createElement(String tagName) throws DOMException 创建新元素
public Text createNode(String data) 创建文本节点,并设置文本呢内容
public NodeList getElementBytagname(String tagname) 找到文本中的所有的指定元素的节点对象
Document描述的是整个文档,所有的元素都要通过Document接口创建
DOM解析流程
如果要进行DOM的操作处理,核心的启动接口:Document,因为使用Document可以创建元素,而后元素可以创建属性,Document又可以创建文本.现在的问题是Document是一个接口,所以如果想使用这个借口就必须为其进行实例化的操作处理,如果想去得Document接口对象则需要一下几个类的支持:
1,文档解析工厂类:javax.xml.parsers.DocumentBuilderFactory,这是一个抽象类,这个类提供的方法:
去得DocuemntBuilderFactory类实例化对象:public static DocuemntBuilderFactory newInstacne()
创建DocumentBuilder类对象:public abstact DocumentBuilder new DocumentBuilder() throws ParserConfigurationException;
2,文档创建类:javax.xml.parsers.DocumentBuilder;
创建一个新的文档:public abstuct Document newDocument();
解析XML文档:public Document parse(InputStream is) throws SAXEception,IOException;
在内存中将指定的XML输入流变为DOM树;
3,在进行XML文件解析的时候如果返回的是多个节点,则使用"org.w3c.dom.NodeList"接口描述,再接口之中定义如下方法:
取得返回的节点个数:public int getLength();
根据索引取得指定节点:public Node item(int index),可能是Element,Text,Document;
使用DOM创建XML文件
DOM处理的最大的特点在于,可以利用此机制实现CML文件的保存处理,但是在整个的DOM输出过程之中最悲催的事情是DOM并没有规定输出类型,如果想输出,这么干:
1,转换输出工厂类,javax.xml.transform.TransformerFactory
取得TransformerFactory类对象:public static TransformerFactory newInstance() throws TransformerFactoryConfiguratError;
取得Transformer类对象:public abstact Transformer newTransformer() throws TransformerConfigurationException;
2,转换处理类:javax.xml.transform.Transformer:
设置输出属性:public abstract void setOutputPropertoes(Propertoes ofomat)
转换输出:public abstract void transform(Source xmlSource,Result outputTarget) throws TransformerException;
3,数据源操作接口,值得是如何去得所需要的数据(javax.xml.transform.Source):
现在需要进行的是DOM数据的解析处理,所以使用DOMSource子类;
4,数据输出流接口(javax.xml.transform.Result):
此时是向文件之中进行输出控制,所以使用StreamResult;
修改XML文件:
修改的流程:
通过DOM解析将文档加载到内存之中,形成DOM树;
而后为每一个<book> 节点创建一个出版社的子节点,直接在DOM树种进行修改;
而后在设置图书的作者;
DOM最大的特点就在于可以实现XML数据的修改,一切的修改全部都依靠DOM树;
删除XML文件中的数据:
如果要进行删除,则需要取出所有的节点,如果想删除一个节点,必须要知道父节点;
DOM操作最大的特点: 读取XML文件 + 修改XML文件 + DOM树(需要存在内存之中)
所有的语言都有DOM的解析问题
Day11DOM解析
最新推荐文章于 2023-05-11 14:35:55 发布