Document節(jié)點(diǎn)
???????? Document節(jié)點(diǎn)的兩個(gè)直接子節(jié)點(diǎn)的類型分別是DocumentType類型和Element類型,其中的DocumentType節(jié)點(diǎn)對(duì)應(yīng)著XML文件所關(guān)聯(lián)的DTD文件,通過進(jìn)一步獲取該節(jié)點(diǎn)子孫節(jié)點(diǎn)來分析DTDL文件中的數(shù)據(jù);而其中的Element類型節(jié)點(diǎn)對(duì)應(yīng)著XML文件的根節(jié)點(diǎn),通過進(jìn)一步獲取該Element類型節(jié)點(diǎn)子孫節(jié)點(diǎn)來分析XML文件中的數(shù)據(jù)。
?????????
????????? Document 節(jié)點(diǎn)經(jīng)常使用下列方法獲取和該節(jié)點(diǎn)相關(guān)的信息。
????????? Element getDocumentElement()?
?????????? 返回當(dāng)前節(jié)點(diǎn)的Element子節(jié)點(diǎn)。
????????? DocumentType getDoctype()?
????????? 返回當(dāng)前節(jié)點(diǎn)的DocumentType子節(jié)點(diǎn)。
????????? NodeList getElementsByTagName(String name)?
????????? 返回一個(gè)NodeList對(duì)象,該對(duì)象由當(dāng)前節(jié)點(diǎn)的Element類型子孫節(jié)點(diǎn)組成,這些子孫節(jié)點(diǎn)的名字由參數(shù)name指定。
????????? NodeList getElementsByTagNameNS(String namespaceURI,String localName)?
????????? 返回一個(gè)NodeList對(duì)象,該對(duì)象由當(dāng)前節(jié)點(diǎn)的Element類型子孫節(jié)點(diǎn)組成, 這些子孫節(jié)點(diǎn)的名字由參數(shù)localName指定,名稱空間由參數(shù)namespaceURI??? 指定。
????????? String getXmlEncoding()?
????????? 返回XML文件使用的編碼,即XML聲明中encoding屬性的值。
????????? boolean getXmlStandalone()
? ? ? ? ? 返回XML聲明中的standalone屬性的值。未指定時(shí)返回NULL
????????? standalone? 用來表示該文件是否呼叫其它外部的文件。??? 這里所指的外部文件其實(shí)就是查檢XML是不是有效的約束文件,或是DTD或是Schema
????????? String getXmlVersion()?
????????? 返回XML聲明中的version屬性的值
?????????? 其中g(shù)etXmlEncoding getXmlVersion getXmlStandalong在Android2.1中是沒有的。
要解析的XML文件:
靈渠在廣西壯族自治區(qū)興安縣境內(nèi),是世界上最古老的運(yùn)河之一,有著“世界古代水利建筑明珠”的美譽(yù)。靈渠古稱秦鑿渠、零渠、陡河、興安運(yùn)河,于公元前214年鑿成通航,距今已2217年,仍然發(fā)揮著功用。http://img.21ic.com/21ic_pic/CSDN/20120228094142711.jpg膠萊運(yùn)河南起黃海靈山??冢钡植澈H綅u,流經(jīng)現(xiàn)膠南、膠州、平度、高密、昌邑和萊州等,全長(zhǎng)200公里,流域面積達(dá)5400平方公里,南北貫穿山東半島,溝通黃渤兩海。膠萊運(yùn)河自平度姚家村東的分水嶺南北分流。南流由麻灣口入膠州灣,為南膠萊河,長(zhǎng)30公里。北流由海倉口入萊州灣,為北膠萊河,長(zhǎng)100余公里。http://img.21ic.com/21ic_pic/CSDN/20120228094142711.jpg位于淮河下游江蘇省北部,西起洪澤湖邊的高良澗,流經(jīng)洪澤,青浦、淮安,阜寧、射陽,濱海等六縣(區(qū)),東至扁擔(dān)港口入海的大型人工河道。全長(zhǎng)168km。http://img.21ic.com/21ic_pic/CSDN/20120228094142711.jpg
????private?Document??parseXML(InputStream?is)
????{???if(is?==?null)?return?null;
???? DocumentBuilderFactory?dbf?=?DocumentBuilderFactory.newInstance();
//???? dbf.setValidating(true);//設(shè)置檢查XML文件的有效性
//???? dbf.setIgnoringElementContentWhitespace(true);//設(shè)置忽略空白
//???? dbf.setNamespaceAware(false);//設(shè)置為true時(shí),由DocumentBuilderFactory產(chǎn)生的DOM解析器支持名稱空間
???? DocumentBuilder?db?=?null;?//DOM解析器
???? Document?doc?=?null;
????
???? try?{
???? db?=?dbf.newDocumentBuilder();
}?catch?(ParserConfigurationException?e)?{
//?TODO?Auto-generated?catch?block
e.printStackTrace();
}
try?{
?????doc?=?db.parse(is);//可以通過解析XML得到一個(gè)Document
// ?????db.newDocument();//可以創(chuàng)建一個(gè)Document,然后修改它
?????
}?catch?(SAXException?e)?{
//?TODO?Auto-generated?catch?block
e.printStackTrace();
}?catch?(IOException?e)?{
//?TODO?Auto-generated?catch?block
e.printStackTrace();
}
DocumentType?docType?=??doc.getDoctype();
String?xmlEncoding?=?doc.getXmlEncoding();//android2.1不支持
String?xmlVersion?=?doc.getXmlVersion();
????????boolean?isAlone?=?doc.getXmlStandalone();//android2.1不支持
????
????NodeList?list?=?doc.getElementsByTagName("river");
????int?length?=?list.getLength();
????for(int?k?=?0;k<length;k++)
????{
???? Node?node?=?list.item(k);
???? String?nodeName?=?node.getNodeName();
???? String?textContent?=?node.getTextContent();
//取得當(dāng)前節(jié)點(diǎn)下的所有Text節(jié)點(diǎn)內(nèi)容,這里就包括introduction下和imageUrl下的Text以及空格
????
????}
return?doc;
其中g(shù)etXmlEncoding方法在XML設(shè)置了encoding的情況下,取不到,不知道為什么。





