html页面如下:<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
<script language="javascript">
var http_request = false;
function send_request(url) {//初始化、指定处理函数、发送请求的函数
http_request = false;
//开始初始化XMLHttpRequest对象
if(window.XMLHttpRequest) { //Mozilla 浏览器
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) {//设置MiME类别
http_request.overrideMimeType('text/xml');
}
}
else if (window.ActiveXObject) { // IE浏览器
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
if (!http_request) { // 异常,创建对象实例失败
window.alert("不能创建XMLHttpRequest对象实例.");
return false;
}
http_request.onreadystatechange = processRequest;
// 确定发送请求的方式和URL以及是否同步执行下段代码
http_request.open("GET", url, true);
http_request.send(null);
}
// 处理返回信息的函数
function processRequest() {
if (http_request.readyState == 4) { // 判断对象状态
if (http_request.status == 200) { // 信息已经成功返回,开始处理信息
var returnObj = http_request.responseXML;
var xmlobj = http_request.responseXML;
var employees = xmlobj.getElementsByTagName("employee");
var feedbackStr = "";
for(var i=0;i<employees.length;i++) { // 循环读取employees.xml的内容
var employee = employees[i];
feedbackStr += "员工:" + employee.getAttribute("name");
feedbackStr += " 职位:" + employee.getElementsByTagName("job")[0].firstChild.data;
feedbackStr += " 工资:" + employee.getElementsByTagName("salary")[0].firstChild.data;
feedbackStr += "\r\n";
}
alert(feedbackStr);
} else { //页面不正常
alert("您所请求的页面有异常。");
}
}
}
</script>
</head><body>
<input type="button" name="read" value="读取XML" onClick="send_request('employees.xml')">
</body>
</html>
XML 如下:
<?xml version="1.0" encoding="gb2312"?>
<employees>
<employee name="J.Doe">
<job>Programmer</job>
<salary>32768</salary>
</employee>
<employee name="A.Baker">
<job>Sales</job>
<salary>70000</salary>
</employee>
<employee name="Big Cheese">
<job>CEO</job>
<salary>100000</salary>
</employee>
</employees>

解决方案 »

  1.   

    import javax.xml.parsers.*; 
    //XML解析器接口 
    import org.w3c.dom.*; 
    //XML的DOM实现 
    import org.apache.crimson.tree.XmlDocument;
    //写XML文件要用到DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
     //允许名字空间
     factory.setNamespaceAware(true);
     //允许验证
     factory.setValidating(true);
     //获得DocumentBuilder的一个实例
    try { 
     DocumentBuilder builder = factory.newDocumentBuilder();
    } catch (ParserConfigurationException pce) { 
    System.err.println(pce);
    //  出异常时输出异常信息,然后退出,下同
    System.exit(1);

    //解析文档,并获得一个Document实例。 
    try { 
    Document doc = builder.parse(fileURI);
    } catch (DOMException dom) {
    System.err.println(dom.getMessage());
    System.exit(1);
    } catch (IOException ioe) {
    System.err.println(ioe);
    System.exit(1);     
    } //获得根节点StuInfo
    Element elmtStuInfo = doc.getDocumentElement(); //得到所有student节点
     NodeList nlStudent = elmtStuInfo.getElementsByTagNameNS(
                                           strNamespace, "student");
    for (……){
         //当前student节点元素
         Element elmtStudent = (Element)nlStudent.item(i);     NodeList nlCurrent =              elmtStudent.getElementsByTagNameNS(
                                         strNamespace, "name");
    }
      

  2.   

    谢谢 yu__yfchun125(Nick) 小弟迂腐,没有接触过用JS来处理XML由于时间关系,还没有进行测试,那又怎么去改写XML文件呢
    当然还要谢谢 livan1038(李枫)你的代码是否可以给的再完整一点,导入的org.apache.crimson.tree.XmlDocument
    是什么东东,不是标准的JAVA API 我也没有这个JAR包
      

  3.   

    前提你必须有jdom的包 
    关于更多  你应该去看看教程 网上有很多此例供参考
    package test;
    /**
    * <p>Title:  xml解析</p>             
    * <p>Description:null </p>                                     
    * <p>Company: null</p>
    * <p>date:07-8-23 11:05:24  
    * @author dajay                                            
    * @version 1.0
    */
    import java.io.IOException;
    import java.io.StringReader;
    import java.util.Iterator;
    import java.util.List;import org.jdom.Document;
    import org.jdom.Element;
    import org.jdom.JDOMException;
    import org.jdom.input.SAXBuilder;
    import org.jdom.output.Format;
    import org.jdom.output.XMLOutputter;public class JdomTest { public static final String xml = "<?xml version='1.0' encoding='utf-8'?>"+
    "<content>"+
    "<item>"+
    "<title></title>"+
    "<url>http://www.eaknow.com/</url>"+
    "<image>image/flash1.jpg</image>"+
    "</item>"+
    "<item>"+
    "<title></title>"+
    "<url>http://www.eaknow.com/</url>"+
    "<image>image/flash2.jpg</image>"+
    "</item>"+
    "<item>"+
    "<title></title>"+
    "<url>http://www.eaknow.com/</url>"+
    "<image>image/flash3.jpg</image>"+
    "</item>"+
    "<item>"+
    "<title></title>"+
    "<url>http://www.eaknow.com/</url>"+
    "<image>image/flash4.jpg</image>"+
    "</item>"+
    "<item>"+
    "<title></title>"+
    "<url>http://www.eaknow.com/</url>"+
    "<image>image/flash5.jpg</image>"+
    "</item>"+
    "</content>";
    public static void main(String args[]) throws JDOMException, IOException{
    /**
     * 新建解析器
     */
    SAXBuilder builder = new SAXBuilder();
    /**
     * 新建文档对象
     */
    Document document = builder.build(new StringReader(xml));
    /**
     * 获取跟元素
     */
    Element elem = document.getRootElement();
    /**
     * 遍历根元素
     */
    List content = elem.getChildren();
    for(Iterator it = content.iterator();it.hasNext();){
    Element item = (Element) it.next();
    for(Iterator it_item = item.getChildren().iterator();it_item.hasNext();){
    Element title = (Element) it_item.next();
    Element url = (Element) it_item.next();
    Element image = (Element) it_item.next();
    System.out.println("title:" + title.getText() + "\n" +
    "url:" + url.getText() + "\n" + 
    "image:" + image.getText() + "\n");
    /**
     * 修改元素
     */
    title.setText("test_title");
    url.setText("localhost");
    image.setText("mm");
    }
    }
    /**
     * 输出到控制台
     */
    /**
     * 用于输入的对象
     */
    XMLOutputter out = new XMLOutputter();
    /**
     * 格式化document的对象
     */
    Format format = Format.getCompactFormat();
    format.setIndent("   ");
    out.setFormat(format);

    System.out.println("\n\n修改后:");
    /**
     * 输出到控制台
     */
    out.output(elem, System.out);
    }
    }
      

  4.   

    我还是刚看来的 读xml文件 readxml.java 文件内容package test.xml;
    import java.io.File;
    import java.io.IOException;
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import org.w3c.dom.NodeList;
    import org.w3c.dom.Document;public class readxml {
      public  static void main(String arg[]){
       File file=new File("src/xml/NewFile.xml");
       Document doc=null;
       try {
       DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
       DocumentBuilder db = dbf.newDocumentBuilder();
       doc = db.parse(file);
       } catch (IOException ioe) {
       System.out.println("can not find the xml");
       } catch (Exception e) {
       System.out.println(e.getMessage());
       }
       System.out.println(doc);    NodeList messages = doc.getElementsByTagName("MESSAGE");    for (int i = 0; i < messages.getLength(); i++) {
           int message_id = 14;
       message_id = message_id + i;
       System.out.println("MESSAGE_ID:" + message_id);
       String conf_num = doc.getElementsByTagName("CONF_NUM").item(i)
       .getFirstChild().getNodeValue();
       System.out.println("CONF_NUM:" + conf_num);
       String message_time = doc.getElementsByTagName("MESSAGE_TIME")
       .item(i).getFirstChild().getNodeValue();
       System.out.println("MESSAGE_TIME:" + message_time);
       String message_from = doc.getElementsByTagName("MESSAGE_FROM")
       .item(i).getFirstChild().getNodeValue();
       System.out.println("MESSAGE_FROM:" + message_from);
       String messgae_to = doc.getElementsByTagName("MESSAGE_TO").item(i)
       .getFirstChild().getNodeValue();
       System.out.println("MESSAGE_TO:" + messgae_to);
       String message_subject = doc
       .getElementsByTagName("MESSAGE_SUBJECT").item(i)
       .getFirstChild().getNodeValue();
       System.out.println("MESSAGE_SUBJECT:" + message_subject);
       String message_encoding = doc.getElementsByTagName(
       "MESSAGE_ENCODING").item(i).getFirstChild().getNodeValue();
       System.out.println("MESSAGE_ENCODING:" + message_encoding);
       String message_flag = doc.getElementsByTagName("MESSAGE_FLAG")
       .item(i).getFirstChild().getNodeValue();
       System.out.println("MESSAGE_FLAG:" + message_flag);
       String message_status = doc.getElementsByTagName("MESSAGE_STATUS")
       .item(i).getFirstChild().getNodeValue();
       System.out.println("MESSAGE_STATUS:" + message_status);
       String network_id = doc.getElementsByTagName("NETWORK_ID").item(i)
       .getFirstChild().getNodeValue();
       System.out.println("NETWORK_ID:" + network_id);
       String message_direction = doc.getElementsByTagName(
       "MESSAGE_DIRECTION").item(i).getFirstChild().getNodeValue();
       System.out.println("MESSAGE_DIRECTION:" + message_direction);
       String result = doc.getElementsByTagName("RESULT").item(i)
       .getFirstChild().getNodeValue();
       System.out.println("RESULT:" + result);
       String extend_desc = doc.getElementsByTagName("EXTEND_DESC")
       .item(i).getFirstChild().getNodeValue();
       System.out.println("EXTEND_DESC:" + extend_desc);
       System.out.println("*****************");
       }
       }}
    NewFile.xml文件内容<?xml version="1.0" encoding="UTF-8"?>
    <RETRIEVEMESSAGES>  <MESSAGE MESSAGE_ID="14">
          <CONF_NUM>200000014</CONF_NUM>
          <MESSAGE_TIME>2005/03/22 19:06:39</MESSAGE_TIME>
          <MESSAGE_FROM>test1</MESSAGE_FROM>
          <MESSAGE_TO>sc1</MESSAGE_TO>
          <MESSAGE_SUBJECT>test to sc1</MESSAGE_SUBJECT>
          <MESSAGE_ENCODING>ASCII</MESSAGE_ENCODING>
          <MESSAGE_FLAG>READ</MESSAGE_FLAG>
          <MESSAGE_STATUS>Delivered</MESSAGE_STATUS>
          <NETWORK_ID>3</NETWORK_ID>
          <MESSAGE_DIRECTION>Mobile Terminated</MESSAGE_DIRECTION>
          <RESULT>1</RESULT>
          <EXTEND_DESC>Success</EXTEND_DESC>
      </MESSAGE>
      <MESSAGE MESSAGE_ID="15">
          <CONF_NUM>200000015</CONF_NUM>
          <MESSAGE_TIME>2005/03/23 18:26:21</MESSAGE_TIME>
          <MESSAGE_FROM>test1</MESSAGE_FROM>
          <MESSAGE_TO>sc2</MESSAGE_TO>
          <MESSAGE_SUBJECT>test to sc2</MESSAGE_SUBJECT>
          <MESSAGE_ENCODING>ASCII</MESSAGE_ENCODING>
          <MESSAGE_FLAG>READ</MESSAGE_FLAG>
          <MESSAGE_STATUS>Delivered</MESSAGE_STATUS>
          <NETWORK_ID>3</NETWORK_ID>
          <MESSAGE_DIRECTION>Mobile Terminated</MESSAGE_DIRECTION>
          <RESULT>1</RESULT>
          <EXTEND_DESC>Success</EXTEND_DESC>
      </MESSAGE>
    </RETRIEVEMESSAGES>
    NewFile.xml文件放在了 src/xml/下了
      

  5.   

    dom4j   和enjiandan  List urls = new ArrayList();
    List images = new ArrayList();List elements = doc.selectNodes("//*[@url]|[@image]")  //取出所有的  url 和 image 
    for(Iterator iter = elements.iterator();;iter.hasNext()) //循环所有节点 
    {
        Element element = (Element)iter.next();
        if(element.getName().equals("url"))
        { 
           urls.add(element.getTextTrim());
        }else if(element.getName().equals("image")){
           images.add(element.getTextTrim());
        }
    } 完成  呵呵  其它东西 自己写了