邵天强 发表于 2012-12-17 23:41
应用一:获取所有的节点上面的方法是利用递归的方法进行获取所有的节点的。Node是一个接口,xml文档中的所 ...
应用三:获取指定节点的属性值 //获取属性的值<售价 type="rmb">19元</售价> @Test public void test2(){ Document document=this.document; //获取售价的标签 Node priceNode=document.getElementsByTagName("售价").item(1); //因为Node中没有直接获取属性的值的方法,所以找他的子接口,售价为标签所以找Element Element priceElement=(Element) priceNode; //获取属性 String typeAttribute=priceElement.getAttribute("type"); System.out.println(typeAttribute); } |
注意:当我们用程序创建一个新的节点并挂在了指定的节点下面,只是存放在了内存中,如果要改变到xml中,我们需要把内存中的数据写到xml中。 更新XML文档 Java.xml.transform包中的Transformer类用于把代表XML文件的Document对象转换为某种格式后进行输出,例如把xml文件应用样式表后转成一个html文档,利用这个对象,当然也可以把Document对象又重新写入到一个XML文件中。 Transformer类通过transform方法完成转换操作,该方法接收一个源和一个目的。我们可以通过: (1)javax.xml.transform.dom.DOMSource类来关联要转换的document对象 (2)用javax.xml.transform.stream.StreamResult对象来表示数据的目的地。 |
Transformer对象通过TransformerFactory工厂产生。 TransformerFactory类 TransformerFactory类专门用来产生Transformer类的,我们知道工厂一般是单例的,所以我发直接new对象, //创建一个工厂 TransformerFactory factory=TransformerFactory.newInstance(); |
Transformer类 此类为抽象类,作用就是将源树转换为结果树。 Transformer factory=tff.newTransformer(); |
Transformer类中的transform方法 Source接口 实现此接口的对象包含充当源输入(XML源或转换指令)所需的信息 它的实现类如下: Result接口 实现此接口的对象包含构建转换结果数所需的信息。实现类: 上面的Source和Result简单的理解就是,Source:源写到Result:目的上面。 应用四:向xml中添加节点 @Test public void test3(){ //首先获取第一本书的节点 Node bookNode=document.getElementsByTagName("书").item(0); //创建一个新的售价节点 Node newPriceNode=document.createElement("售价"); //向新的售价节点添加文本值 newPriceNode.setTextContent("59元"); //然后把新的节点挂到书上面 bookNode.appendChild(newPriceNode); //上面的是写到了内存中,要想把内存中的数据写到xml中 //创建一个工厂 TransformerFactory tff=TransformerFactory.newInstance(); //创建一个输出的 try { Transformer former=tff.newTransformer(); former.transform(new DOMSource(document), new StreamResult(new File("src/book.xml"))); } catch (Exception e) { e.printStackTrace(); } } |
应用五:删除节点 //删除节点<作者 id="12">张孝祥</作者> @Test public void test4(){ //首先获取这个节点 Node authorNode=document.getElementsByTagName("作者").item(0); //因为自己不能删除自己,只能他的父节点删除它所以要得到她的父节点 Node parentNode=authorNode.getParentNode(); //调用Node中的方法删除之 parentNode.removeChild(authorNode); //上面的是在内存中删除的,需要把它写到xml文档中去 //创建一个输入输入工厂 TransformerFactory factory=TransformerFactory.newInstance(); try { //获取Transformer对象 Transformer former=factory.newTransformer(); //从源到目的 former.transform(new DOMSource(document), new StreamResult(new File("src/book.xml"))); } catch (Exception e) { e.printStackTrace(); } } |
|