以下是一个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属性值提出(打印出来)。本人弄了三天都没有弄出来。求大师帮助。在此万分感激。
<?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属性值提出(打印出来)。本人弄了三天都没有弄出来。求大师帮助。在此万分感激。
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;
}
}
}
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
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();
} }}
写的方法如下: 打印出来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);
}
}
}
}
}
<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>
看这个的回复,我已经弄好了,记得结贴