Java XML操作总结
一、读取XML文件
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();//DOM解析器工厂
factory.setIgnoringElementContentWhitespace(true);
DocumentBuilder builder = factory.newDocumentBuilder();//获取DOM解析器
//解析XML文档,并获取该XML文档对应的Document
Document doc = builder.parse(new File("D:\\MyEclipse\\Workspaces\\AHP_03_09_11\\src\\intergraph\\ahp\\AHP.xml"));
二、读取XML字符串
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setIgnoringElementContentWhitespace(true);
//获取DOM解析器
DocumentBuilder builder = factory.newDocumentBuilder();
//解析XML文档,并获取该XML文档对应的Document
Document doc = builder.parse(new InputSource(new StringReader(xmlStr)));
三、遍历XML
//DOM解析器工厂
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setIgnoringElementContentWhitespace(true);
//获取DOM解析器
DocumentBuilder builder = factory.newDocumentBuilder();
//解析XML文档,并获取该XML文档对应的Document
Document doc = builder.parse(new File("D:\\MyEclipse\\Workspaces\\AHP_03_09_11\\src\\intergraph\\ahp\\book-list.xml"));
/*
我们在JavaScript中编程时的document也是Document类的实例,
因为XML文档的元素通常没有ID属性,
否则也可通过getElementById()方法来访问各元素。
*/
//获得根节点的方法,getDocumentElement
Element bookList = doc.getDocumentElement();
//获取根元素所包含的所有“计算机书籍”子元素,
//如果传入*作为参数,可获取所有子元素
NodeList nodeList = bookList.getElementsByTagName("计算机书籍");
//遍历每个子元素
for (int i = 0; i < nodeList.getLength() ; i++ )
{
System.out.println("------------第" + i + "本计算机书籍--------------");
Node comBook = nodeList.item(i);
//获取ISBN属性节点
Node isbnAttr = comBook.getAttributes().getNamedItem("ISBN");
if (isbnAttr != null)
{
System.out.println("该图书的ISBN为:" + isbnAttr.getTextContent());
}
//获取comBook下的所有子元素
NodeList attList = comBook.getChildNodes();
//遍历每个子元素
for (int j = 0; j < attList.getLength() ; j++ )
{
System.out.println(attList.item(j).getTextContent().trim());
}
}
//获取根元素所包含的所有“文学书籍”子元素,
nodeList = bookList.getElementsByTagName("文学书籍");
//遍历每个子元素
for (int i = 0; i < nodeList.getLength() ; i++ )
{
System.out.println("------------第" + i + "本文学书籍--------------");
Node cultureBook = nodeList.item(i);
System.out.println(cultureBook.getTextContent());
}
//获取根元素所包含的所有“哲学书籍”子元素,
nodeList = bookList.getElementsByTagName("哲学书籍");
//遍历每个子元素
for (int i = 0; i < nodeList.getLength() ; i++ )
{
System.out.println("------------第" + i + "本哲学书籍--------------");
Node cultureBook = nodeList.item(i);
System.out.println(cultureBook.getTextContent().trim());
System.out.println(cultureBook.getFirstChild().getTextContent().trim());
}
四、XML转字符串
private String XMLDocumentToStr(Document document){
String xmlStr = null;
try {
TransformerFactory tf = TransformerFactory.newInstance();
Transformer t = tf.newTransformer();
t.setOutputProperty("encoding", "GBK");
ByteArrayOutputStream bos = new ByteArrayOutputStream();
t.transform(new DOMSource(document), new StreamResult(bos));
xmlStr = bos.toString();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return xmlStr;
}
五、添加和修改属性
利用Element对象的setAttribute方法。
如果遇到Node对象,可以将Node强制转换成Element对象。
Node cp = cpList.item(j);
Element cpElement = null;
cpElement = ( Element )cp;
六、判断Node节点是否是Element对象
if(cpList.item(j).getNodeType()==Node.ELEMENT_NODE)