灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:2553回复:0

DOM解析的例子

楼主#
更多 发布于:2012-09-08 09:39


下面代码使用DOM解析XML文件
[java]
package com.app;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;

public class DOMXMLReader {

    public static void main(String args[]) {
        try {
            DocumentBuilderFactory factory = DocumentBuilderFactory
                    .newInstance();
            DocumentBuilder builder = factory.newDocumentBuilder();
            Document doc = builder.parse("url.xml");
            doc.normalize();
            NodeList links = doc.getElementsByTagName("link");
            for (int i = 0; i < links.getLength(); i++) {
                Element link = (Element) links.item(i);
                System.out.print("Content: ");
                System.out.println(link.getElementsByTagName("text").item(0)
                        .getFirstChild().getNodeValue());
                System.out.print("URL: ");
                System.out.println(link.getElementsByTagName("url").item(0)
                        .getFirstChild().getNodeValue());
                System.out.print("Author: ");
                System.out.println(link.getElementsByTagName("author").item(0)
                        .getFirstChild().getNodeValue());
                System.out.print("Date: ");
                Element linkdate = (Element) link.getElementsByTagName("date")
                        .item(0);
                String day = linkdate.getElementsByTagName("day").item(0)
                        .getFirstChild().getNodeValue();
                String month = linkdate.getElementsByTagName("month").item(0)
                        .getFirstChild().getNodeValue();
                String year = linkdate.getElementsByTagName("year").item(0)
                        .getFirstChild().getNodeValue();
                System.out.println(day + "-" + month + "-" + year);
                System.out.print("Description: ");
                System.out.println(link.getElementsByTagName("description")
                        .item(0).getFirstChild().getNodeValue());
                System.out.println();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
下面代码修改XML文件:
package com.app;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Text;

public class DOMXMLWriter {

    public static void main(String args[]) {
        try {
            DocumentBuilderFactory factory = DocumentBuilderFactory
                    .newInstance();
            DocumentBuilder builder = factory.newDocumentBuilder();
            Document doc = builder.parse("url.xml");
            doc.normalize();
            // ---取得变量----  
            String text = "itjob";
            String url = "www.5itjob.com";
            String author = "xsw";
            String discription = "a good website for it job!";
            // -------------  
            Text textseg;
            Element link = doc.createElement("link");

            Element linktext = doc.createElement("text");
            textseg = doc.createTextNode(text);
            linktext.appendChild(textseg);
            link.appendChild(linktext);

            Element linkurl = doc.createElement("url");
            textseg = doc.createTextNode(url);
            linkurl.appendChild(textseg);
            link.appendChild(linkurl);

            Element linkauthor = doc.createElement("author");
            textseg = doc.createTextNode(author);
            linkauthor.appendChild(textseg);
            link.appendChild(linkauthor);

            java.util.Calendar rightNow = java.util.Calendar.getInstance();
            String day = Integer.toString(rightNow
                    .get(java.util.Calendar.DAY_OF_MONTH));
            String month = Integer.toString(rightNow
                    .get(java.util.Calendar.MONTH));
            String year = Integer.toString(rightNow
                    .get(java.util.Calendar.YEAR));
            Element linkdate = doc.createElement("date");

            Element linkdateday = doc.createElement("day");
            textseg = doc.createTextNode(day);
            linkdateday.appendChild(textseg);

            Element linkdatemonth = doc.createElement("month");
            textseg = doc.createTextNode(month);
            linkdatemonth.appendChild(textseg);

            Element linkdateyear = doc.createElement("year");
            textseg = doc.createTextNode(year);
            linkdateyear.appendChild(textseg);

            linkdate.appendChild(linkdateday);
            linkdate.appendChild(linkdatemonth);
            linkdate.appendChild(linkdateyear);
            link.appendChild(linkdate);

            Element linkdiscription = doc.createElement("description");
            textseg = doc.createTextNode(discription);
            linkdiscription.appendChild(textseg);
            link.appendChild(linkdiscription);

            doc.getDocumentElement().appendChild(link);

            TransformerFactory tFactory = TransformerFactory.newInstance();
            Transformer transformer = tFactory.newTransformer();
            DOMSource source = new DOMSource(doc);
            StreamResult result = new StreamResult(new java.io.File("url.xml"));
            transformer.transform(source, result);
            System.out.println("write complete!");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}


喜欢0 评分0
游客

返回顶部