您的位置:首页 > 其它

数据传输---xml

2015-08-25 15:07 211 查看
解析xml文件:
public class xmlTest {
public static void main(String[] args) {
try{
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse(new File("liu.xml")); //document对象是org。w3c包中的,java自带包
Element root = document.getDocumentElement();//读取文档根元素
System.out.println(root.getAttribute("cat")); //读取根元素的指定属性值
NodeList list =    root.getElementsByTagName("lan");//读取子元素,必须指定元素名,返回所以节点
for(int i=0;i<list.getLength();i++){ //遍历集合
Element lan = (Element) list.item(i); //从集合中获取,一条元素
System.out.println("---");
System.out.println("id="+lan.getAttribute("id")); //获取该元素中,id属性的值
//用name的方法获取不方便
//    Element name = (Element) lan.getElementsByTagName("name").item(0);//按元素名获取该元素的子元素,将得到该名字的元素集合,从集合元素中获取第一个元素
//    System.out.println(name.getTextContent()); //获取元素中的name属性值,因为是文本 所以用getText获取
NodeList clist = lan.getChildNodes();//获取该元素下的所有子节点
for (int j = 0; j < clist.getLength(); j++) {
//                    Element c = (Element) clist.item(j);
//                    System.out.println(c.getTagName()+"="+c.getTextContent());//获得
Node c = clist.item(j);
if(c instanceof Element) //因为该api是把每次回车后读取成一个节点,所以要做判断验证只有当节点是Element才做处理。空的就不做处理。
System.out.println(c.getNodeName()+"="+c.getTextContent());
}
}
}catch(Exception e){
}
}
}

生成xml文件:
public class createXml {
public static void main(String[] args) throws ParserConfigurationException, TransformerException {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();//使用它的静态方法创建一个工厂对象。(单例模式)
DocumentBuilder builder = factory.newDocumentBuilder();//利用工厂对象生成文档生成器对象
Document document = builder.newDocument(); //利用文档生成器,创建一个具体的文档
//根元素
Element root = document.createElement("Languages");//利用文档创建一个以languages为名的元素
root.setAttribute("cat", "it"); //在此元素下设置一个叫cat的属性,病赋值为it
//子元素
Element lan1 = document.createElement("lan");  //创建一个lan元素
lan1.setAttribute("id", "1"); //定义一个id属性
//子元素,子元素
Element name1 = document.createElement("name");//创建一个name元素
name1.setTextContent("java"); //在元素下添加一个文本
Element ide1 = document.createElement("ide");
ide1.setTextContent("Eclipse");
lan1.appendChild(name1); //把name1元素添加到lan元素里
lan1.appendChild(ide1); //把ide1元素添加到lan元素里
root.appendChild(lan1);    //把lan1元素添加到Languages元素里

Element lan2 = document.createElement("lan");  //创建一个lan元素
lan2.setAttribute("id", "2"); //定义一个id属性
Element name2 = document.createElement("name");
name2.setTextContent("switfe");
Element ide2 = document.createElement("ide");
ide2.setTextContent("xcode");
lan2.appendChild(name2);
lan2.appendChild(ide2);
root.appendChild(lan2);

document.appendChild(root); //最后把元素添加到document中

/* ----------------打印与输出到文件---------------------- */
TransformerFactory  transformerFactory= TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
StringWriter writer = new StringWriter(); //生成一个字符串输出流
transformer.transform(new DOMSource(document), new StreamResult(writer)); //第一个参数是需要输出的xml,第二个是输出的格式(输出到字符流中)
transformer.transform(new DOMSource(document), new StreamResult(new File("liu.xml")));//输出到文件中

System.out.println(writer.toString());//打印字符流。
}
}


liu.xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Languages cat="it">
<lan id="1">
<name>java</name>
<ide>Eclipse</ide>
</lan>
<lan id="2">
<name>switfe</name>
<ide>xcode</ide>
</lan>
</Languages>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: