java xml解析
2017-10-10 本文已影响27人
帅哥_刷哥
1.介绍
dom解析
sax解析
jdom解析
dom4j解析
StAX 解析
2.dom解析
//1.DOM介绍
文档对象模型( Document Object Model )
DOM把XML文档映射成一个倒挂的树
//2.步骤
创建解析器工厂对象
由解析器工厂对象创建解析器对象
由解析器对象对指定XML文件进行解析,构建相应DOM树,创建Document对象
以Document对象为起点对DOM树的节点进行增删改查操作使用
//3.获得代表文件的Document
public Document getDocument(){
try {
File file = new File("D://students.xml");
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = factory.newDocumentBuilder();
Document document = documentBuilder.parse(file);
return document;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
//4.获得根元素
public void elementMethod(){
Document document = getDocument();
NodeList elementsByTagName = document.getElementsByTagName("student");
//1.getLength() 集合的长度
for(int index = 0;index<elementsByTagName.getLength();index++){
//2.item(index) 根据下标获取指定位置的Element
Element element = (Element)elementsByTagName.item(index);
//3.getTagName()获得标签名
String tagName = element.getTagName();
System.out.println(tagName);
//4.getNodeName()获得标签名
String nodeName = element.getNodeName();
System.out.println(nodeName);
//5.获得某个属性的值
String attribute = element.getAttribute("id");
System.out.println(attribute);
//6.获得某个属性被封装后的节点
Attr attributeNode = element.getAttributeNode("id");
//7.获得第一个子节点
Node firstChild = element.getFirstChild();
//8.获得最后一个子节点
Node lastChild = element.getLastChild();
//9.获得父节点
Node parentNode = element.getParentNode();
//10.获得下一个兄弟节点
Node nextSibling = element.getNextSibling();
System.out.println(nextSibling);
//11.获得上一个兄弟节点
Node previousSibling = element.getPreviousSibling();
//12.获得元素的类型 Node.ELEMENT_NODE
short nodeType = element.getNodeType();
System.out.println(nodeType);
//13.获得元素value属性的值
String nodeValue = element.getNodeValue();
System.out.println(nodeValue);
//14.获得元素的前缀
String prefix = element.getPrefix();
System.out.println(prefix);
//15.获得元素开始标签和结束标签之间的文本值
String textContent = element.getTextContent();
System.out.println(textContent);
//16.获得所有属性的集合
NamedNodeMap attributes = element.getAttributes();
System.out.println(attributes);
//getLength()是获取集合的长度
for(int i=0;i<attributes.getLength();i++){
//item(i)根据下标获取指定位置的元素
Element item = (Element)attributes.item(i);
}
//17.获得所有的子节点
NodeList childNodes = element.getChildNodes();
System.out.println(childNodes);
//getLength()是获取集合的长度
for(int i = 0;i<childNodes.getLength();i++){
//item(i)根据下标获取指定位置的元素
Element item = (Element)childNodes.item(i);
}
}
}
//5.写入xml文件
public void save2Xml(Document document){
try {
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer();
DOMSource xmlSource = new DOMSource(document); //DOM源
File file = new File("D:\\students.xml");
StreamResult outputTarget = new StreamResult(file);//构建流
transformer.transform(xmlSource, outputTarget);
} catch (Exception e) {
e.printStackTrace();
}
}
//6.新增节点与属性
public void addNode(Document document){
//document是文档对象
Element element = document.createElement("student");
////属性
Attr attr = document.createAttribute("id");
attr.setValue("s003"); //设置值
element.setAttributeNode(attr); //添加
//子节点
Element e = document.createElement("name");
e.setTextContent("王五");
element.appendChild(e); //添加
Element e1 = document.createElement("age");
e1.setTextContent("30");
element.appendChild(e1); //添加
}
3.sax解析
4.jdom解析
5.dom4j解析