XML Schema 的代码编写

来源:互联网 发布:java基础代码题 编辑:程序博客网 时间:2024/06/06 03:41
XML Schema 的代码编写


1、查找节点:

(xml文档可以自己编写的。)

奋斗shuiguo.xml

<?xml version="1.0" encoding="UTF-8"?>
<水果>
<苹果>苹果</苹果>
<香蕉>中文</香蕉>
<梨>pear</梨>
</水果>


(1)查找节点名称、节点值、节点类型和节点个数


import java.io.File;


import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;


import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;


public class DomTest {


public static void main(String[] args) throws Exception {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();




DocumentBuilder builder = factory.newDocumentBuilder(); 
Document doc = builder.parse(new File("src/shuiguo.xml"));


childNodesLength(doc);
Node shuiguo = doc.getElementsByTagName("水果").item(0);
listNodes(shuiguo);


}


public static void listNodes(Node shuiguo) {
NodeList nodelist = shuiguo.getChildNodes();
for (int i = 0; i < nodelist.getLength(); i++) {
System.out.println("节点的名称" + nodelist.item(i).getNodeName()
+ "    节点的类型:" + nodelist.item(i).getNodeType()
+ "    节点的值:" + nodelist.item(i).getNodeValue());
}


}


public static void childNodesLength(Document doc) {
Node shuiguo = doc.getElementsByTagName("水果").item(0);
NodeList nodelist = shuiguo.getChildNodes();
int count = 0;
for (int i = 0; i < nodelist.getLength(); i++) {
if (nodelist.item(i).getNodeType() == Node.ELEMENT_NODE)
count++;
}
System.out.println("水果中含有的元素节点的个数是:" + count);
}
}






(2)打印节点的名称和内容:


import java.io.File;


import javax.xml.parsers.*;


import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;


public class DomTest1 {


public static void main(String[] args) throws Exception {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(new File("src/shuiguo.xml"));


Node node = doc.getElementsByTagName("水果").item(0); 
listNode(node);
}


public static void listNode(Node node) {
System.out.println("节点名称:" + node.getNodeName() + "    节点值:"
+ node.getNodeValue()); 
if (node.getNodeType() == Node.ELEMENT_NODE) {
NamedNodeMap map = node.getAttributes();
if (map != null) {
for (int i = 0; i < map.getLength(); i++) {
System.out.println("属性节点名称:" + map.item(i).getNodeName()
+ "   属性节点的值:" + map.item(i).getNodeValue());
}
}

NodeList nodelist = node.getChildNodes();
if (nodelist.getLength() > 0) {
for (int i = 0; i < nodelist.getLength(); i++) {
listNode(nodelist.item(i)); 
}

}
}








(3)对属性和节点的一些插删改查:


import java.io.File;


import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;


import org.w3c.dom.Attr;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;


public class DomTest2 {


public static void main(String[] args) throws Exception {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(new File("src/shuiguo.xml"));


find(doc);     
findAtt(doc);    
createElement(doc); 
removeElement(doc);    
updateElement(doc);
updateAttribute(doc);  
  }


public static void updateAttribute(Document doc) throws Exception {
Node apple=doc.getElementsByTagName("苹果").item(0);
if(apple.getNodeType()==Node.ELEMENT_NODE){
Element element=(Element)apple;
element.getAttributeNode("id").setValue("333333");
}
TransformerFactory factory=TransformerFactory.newInstance();     
Transformer former=factory.newTransformer();   
former.transform(new DOMSource(doc), new StreamResult(new File("src/shuiguo.xml")));  




}


public static void updateElement(Document doc) throws Exception {
Node grape=doc.getElementsByTagName("葡萄").item(0);
grape.setTextContent("grapegrapegrape");


TransformerFactory factory=TransformerFactory.newInstance();   
Transformer former=factory.newTransformer();   
former.transform(new DOMSource(doc), new StreamResult(new File("src/shuiguo.xml")));  
}


public static void removeElement(Document doc) throws Exception {
Node grape=doc.getElementsByTagName("葡萄").item(0);
grape.getParentNode().removeChild(grape);

TransformerFactory factory=TransformerFactory.newInstance();  
Transformer former=factory.newTransformer();  
former.transform(new DOMSource(doc), new StreamResult(new File("src/shuiguo.xml")));  
}


public static void createElement(Document doc) throws Exception {
NodeList shuiguos=doc.getElementsByTagName("水果");
Node shuiguo=shuiguos.item(1);
Node grape=doc.createElement("葡萄");     
Node grapevalue=doc.createTextNode("grape");  

grape.appendChild(grapevalue);     
shuiguo.insertBefore(grape, doc.getElementsByTagName("梨").item(1));

TransformerFactory factory=TransformerFactory.newInstance(); 
Transformer former=factory.newTransformer();     
former.transform(new DOMSource(doc), new StreamResult(new File("src/shuiguo.xml")));  
}


public static void findAtt(Document doc) {
NodeList nodelist=doc.getElementsByTagName("水果");  
Node node=nodelist.item(0);    
if(node.getNodeType()==Node.ELEMENT_NODE){
Element element=(Element)node;   
String name=element.getAttribute("id");
System.out.println(name);
}
}


public static void find(Document doc) {
NodeList nodelist=doc.getElementsByTagName("水果"); 
Node node=nodelist.item(0);   
String value=node.getTextContent();  
String value1=node.getNodeValue();
String value2=node.getChildNodes().item(0).getNodeValue();
System.out.println(value2);
}
}



原创粉丝点击