以下是一个XML文件:
<?xml version="1.0" encoding="gb2312"?>
<ROOT ver="1.0" type="schinese">
  <RELEASETIME date="2008-05-28 20:00:00" />
  <STATION ID="54511" NAME="北京" PROVINCE="北京" DISTRICT="北京" TELCODE="010" POSTCODE="100081" LONGITUDE="116.28" LATITUDE="39.48" ALTITUDE="32">
    <FORECASTINFO>
      <FORECASTDATA DATE="2008-05-29" BWEA="浮尘" EWEA="晴" BWD="北风" EWD="北风" BWS="4-5级" EWS="4-5级" TMAX="24" TMIN="16" />
      <FORECASTDATA DATE="2008-05-30" BWEA="晴" EWEA="晴" BWD="北风" EWD="北风" BWS="4-5级" EWS="3-4级" TMAX="31" TMIN="14" />
      <FORECASTDATA DATE="2008-05-31" BWEA="多云" EWEA="阴" BWD="无风向" EWD="无风向" BWS="微风" EWS="微风" TMAX="27" TMIN="18" />
    </FORECASTINFO>
    <INDEXINFO>
      <INDEXDATA DATE="2008-05-29" CT_N="温凉"/>
    </INDEXINFO>
  </STATION>
</ROOT>现在想用DOM解析,将里面的DATE 和 CT_N属性值提出(打印出来)。本人弄了三天都没有弄出来。求大师帮助。在此万分感激。

解决方案 »

  1.   


    public static void getDate(Document doc){
    Element root = doc.getDocumentElement();
    NodeList stations = root.getElementsByTagName("STATION");
    Element beijing = null;
    for(int i = 0 ; i< stations.getLength();i++){
    beijing = (Element)stations.item(i);
    if("54511".equals(beijing.getAttribute("ID"))){
    NodeList indexInfos = beijing.getElementsByTagName("INDEXINFO");
    Element indexInfo = (Element)indexInfos.item(0);
    System.out.println(indexInfo.getAttribute("DATE"));
    System.out.println(indexInfo.getAttribute("CT_N"));
    return;
    }
    }
    }
      

  2.   

    import java.io.File;import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import javax.xml.xpath.XPath;
    import javax.xml.xpath.XPathConstants;
    import javax.xml.xpath.XPathFactory;import org.w3c.dom.Document;
    import org.w3c.dom.NodeList;public class t {
    public static void main(String[] args) {
    try {
    DocumentBuilderFactory fac = DocumentBuilderFactory.newInstance();
    DocumentBuilder builder = fac.newDocumentBuilder();
    Document doc = builder.parse(new File("d:/aa.xml"));
    XPathFactory pathFactory = XPathFactory.newInstance();
    XPath path = pathFactory.newXPath();
    NodeList list = (NodeList) path.evaluate("//@DATE|//@CT_N", doc,
    XPathConstants.NODESET); for (int i = 0; i < list.getLength(); i++) {
    System.out.println(list.item(i).getNodeValue());
    }
    } catch (Exception e) {
    // TODO: handle exception
    e.printStackTrace();
    } }}2008-05-29
    2008-05-30
    2008-05-31
    温凉
    2008-05-29
      

  3.   

    import java.io.File;import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import javax.xml.xpath.XPath;
    import javax.xml.xpath.XPathConstants;
    import javax.xml.xpath.XPathFactory;import org.w3c.dom.Document;
    import org.w3c.dom.NodeList;public class t {
        public static void main(String[] args) {
            try {
                DocumentBuilderFactory fac = DocumentBuilderFactory.newInstance();
                DocumentBuilder builder = fac.newDocumentBuilder();
                Document doc = builder.parse(new File("d:/aa.xml"));
                XPathFactory pathFactory = XPathFactory.newInstance();
                XPath path = pathFactory.newXPath();
                NodeList list = (NodeList) path.evaluate("//@DATE|//@CT_N", doc,
                        XPathConstants.NODESET);            for (int i = 0; i < list.getLength(); i++) {
                    System.out.println(list.item(i).getNodeValue());
                }
            } catch (Exception e) {
                // TODO: handle exception
                e.printStackTrace();
            }    }}
      

  4.   

    上个礼拜看了个对XML删除数据的方法,有点问题 删除不了.
    写的方法如下:  打印出来nnm.getLength()这个一直是0.看了一下方法也不知道什么原因
      public static void delElement(Document dc, String idValue) {
     NodeList nl=dc.getElementsByTagName("student");
        Element e;
        NamedNodeMap nnm;//属性集合
        Attr att;
        for(int i=0;i<nl.getLength();i++){
          e=(Element)nl.item(i);
          nnm=e.getAttributes();
          if(nnm!=null){
          for(int j=0;j<nnm.getLength();j++){
          att=(Attr)nnm.item(j);
          if((att.getName().equals("id"))&&(att.getValue().equals(idValue))){
            (e.getParentNode()).removeChild(e); 
            }
           }
          }
        }
        }
      

  5.   

    <?xml version="1.0" encoding="utf-8"?>
    <studentInfo>
     
        <student>
        <name id="101">bb</name>
        <age>20</age>
        <sex>nan</sex>
        <score>79</score>
        </student>
        <student>
        <name id="102">cc</name>
        <age>20</age>
        <sex>nv</sex>
        <score>68</score>
        </student></studentInfo>
      

  6.   

    http://topic.csdn.net/u/20080616/18/2e0e0ba4-53cb-4384-824a-6917d6882feb.html
    看这个的回复,我已经弄好了,记得结贴