无线&移动互联网技术研发

换位思考·····
posts - 19, comments - 53, trackbacks - 0, articles - 283
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

现在应用中,有很多方法来解析xml,多少DOM才是JDK解析xml的根本,这个是我从网上摘的,不错。

package com.Gavin.xml;

//文件类
import java.io.File;
import java.io.FileNotFoundException;

//文件输出类
import java.io.FileOutputStream;
import java.io.IOException;

//负责解析的类
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;

//xml映射输入和输出类
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

//节点类
import org.w3c.dom.Comment;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

public class CreateXmlContent {
    
public static void main(String args[]) {
        
try {
            
// 构造的原始数据对象
            String train[] = "T1次""K185次""Z17次" };
            String type[] 
= "特快""普快""直达" };
            String startTime[] 
= "15:45""11:47""18:10" };

            
// 解析器工厂类
            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

            
// 解析器
            DocumentBuilder builder = factory.newDocumentBuilder();

            
// 操作的Document对象
            Document document = builder.newDocument();

            
// 设置XML的版本
            document.setXmlVersion("1.0");

            
// 添加注释
            Comment xmlComment = document.createComment("本文档中内容主要用于测试!");

            
// 将注释添加到xml中
            document.appendChild(xmlComment);

            
// 设置根节点名称
            Element traintimelist = document.createElement("火车时刻表");

            
// 把节点添加到根节点
            document.appendChild(traintimelist);

            
for (int k = 1; k <= train.length; k++{
                traintimelist.appendChild(document.createElement(
"车次"));
            }


            NodeList nodeList 
= document.getElementsByTagName("车次");
            
int size = nodeList.getLength();
            
for (int k = 0; k < size; k++{
                Node node 
= nodeList.item(k);
                
if (node.getNodeType() == Node.ELEMENT_NODE) {
                    Element elementNode 
= (Element) node;
                    elementNode.setAttribute(
"类别", type[k]);
                    elementNode.appendChild(document.createElement(
"名字"));
                    elementNode.appendChild(document.createElement(
"开车时间"));

                }

            }


            nodeList 
= document.getElementsByTagName("名字");
            size 
= nodeList.getLength();
            
for (int k = 0; k < size; k++{
                Node node 
= nodeList.item(k);
                
if (node.getNodeType() == Node.ELEMENT_NODE) {
                    Element elementNode 
= (Element) node;
                    elementNode.appendChild(document.createTextNode(train[k]));

                }

            }


            nodeList 
= document.getElementsByTagName("开车时间");
            size 
= nodeList.getLength();
            
for (int k = 0; k < size; k++{
                Node node 
= nodeList.item(k);
                
if (node.getNodeType() == Node.ELEMENT_NODE) {
                    Element elementNode 
= (Element) node;
                    elementNode.appendChild(document
                            .createTextNode(startTime[k]));

                }

            }

            
// 开始把Document映射到文件
            TransformerFactory transFactory = TransformerFactory.newInstance();
            Transformer transformer 
= transFactory.newTransformer();
            
// 设置输出结果
            DOMSource domSource = new DOMSource(document);
            
// 生成xml文件
            File file = new File("北京到长沙火车时刻表.xml");

            
// 判断是否存在,如果不存在,则创建
            if (!file.exists()) {
                file.createNewFile();
            }

            
// 文件输出流
            FileOutputStream out = new FileOutputStream(file);
            
// 设置输入源
            StreamResult xmlResult = new StreamResult(out);
            
// 输出xml文件
            transformer.transform(domSource, xmlResult);
            
// 测试文件输出的路径
            System.out.println(file.getAbsolutePath());
        }
 catch (ParserConfigurationException e) {
            e.printStackTrace();
        }
 catch (TransformerConfigurationException e) {
            e.printStackTrace();
        }
 catch (FileNotFoundException e) {
            e.printStackTrace();
        }
 catch (TransformerException e) {
            e.printStackTrace();
        }
 catch (IOException e) {
            e.printStackTrace();

        }
 finally {

        }


    }

}


xml:
 <?xml version="1.0" encoding="UTF-8" ?> 
<!-- 本文档中内容主要用于测试!
  
--> 
<火车时刻表>
<车次 类别="特快">
  
<名字>T1次</名字> 
  
<开车时间>15:45</开车时间> 
  
</车次>
<车次 类别="普快">
  
<名字>K185次</名字> 
  
<开车时间>11:47</开车时间> 
  
</车次>
<车次 类别="直达">
  
<名字>Z17次</名字> 
  
<开车时间>18:10</开车时间> 
  
</车次>
  
</火车时刻表>

评论

# re: Dom 生成xml --http://www.w3school.com.cn/xmldom/xmldom_reference.asp (dom手册)  回复  更多评论   

2012-11-16 07:53 by W3School
http://www.w3school.org.cn/xmldom/xmldom_reference.asp

只有注册用户登录后才能发表评论。


网站导航: