-
SAX獲取節點名與節點值. 1.節點名直接在重寫的startElement()方法中通過輸出qName便可以. 2.要得到節點值,則需要在類中重寫characters()方法 public void characters(char[] ch, int start, int length) SAX中是先通過startDocument->startElement->characters->endElement->endDocument. 中間3個一直循環. 每次遇到標簽調用characters方法的時候它的字符數組ch實際上就是我們整個的book xml文檔的內容。 start為要讀取內容的開始位置放到ch數組,length為長度 <name>冰與火之歌</name> 則開始位置在冰,長度為5. 把ch字符數組轉文String類型輸出,通過String(byte[] bytes,int offset,int length)的構造方法進行數組的傳遞. 再去除解析時多余空格,String.trim()作用是去除字符串的前綴和后綴的空格,這里空格和換行也當做一個節點,所以例子中會多了兩行空格 String value=String(ch,start,length) if(!value.trim().equals("")){ System.out.println(value); }查看全部
-
SAX方法獲取XML的節點屬性 1.在繼承于DefaultHandler的類中重寫startElement()方法 startElement(String uri, String localName, String qName,Attributes attributes) attributes.getVaule();方法參數可以是屬性名或者索引值(第幾個屬性值),來獲取屬性值,返回字符串. attributes.getQName();方法參數是索引值,獲取屬性名. 2.已知節點元素下屬性的名稱,根據屬性名獲取屬性值. 在此方法中qName為屬性名,通過attributes.getValue("")方法獲取屬性值.參數是屬性名.返回字符串類型. 3.未知節點元素下屬性的名稱以及個數時 通過attributes.getLength();方法判斷單個開始標簽一共有多少個屬性名. 通過for循環依次輸出屬性名和屬性值 for(i=0;i<attributes.getLength();i++) { System.out.print("book元素的第"+(i+1)+"個屬性名為"+attributes.getQName(i)); System.out.println("屬性值是:"+attributes.getValue(i)); }查看全部
-
SAX方式解析xml步驟 1.通過SAXParserFactory的靜態newInstance()方法獲取一個SAXParserFactory的對象。 2.通過SAXParserFactory對象的newSAXParser()方法返回一個SAXParser類的對象。 3.創建一個類繼承DefaultHandler,重寫其中的一些方法并創建類的實例. 4.通過SAXParser類的Parse(Stringname,df)方法解析xml文件,參數Stringname為路徑名,df為繼承于DefaultHandler類的實例化對象,不需要定義變量存儲返回的類型. SAX是按節點順序進行解析,遇到xml的聲明即開始解析,遇到最后一個節點的尾節點便結束解析,需要用戶自己定義一個類繼承于DefaultHandler類來解析,遇到開始標簽節點便通過startElement開始解析節點,遇到結束標簽節點便通過endElement結束解析,再遇到開始節點繼續通過startElement解析,一直循環直到xml文件最后的結束標簽節點. 5.在繼承于DefaultHandler這個類中需要重寫父類的startElement()和endElement()方法,來進行開始節點與結束節點的解析,再重寫startDocument()方法與endDocument()方法來標識解析的開始與結束.查看全部
-
JDOM與DOM4J的區分查看全部
-
JDOM與DOM4J的區分查看全部
-
SAX解析的優缺點查看全部
-
DOM解析優缺點分析查看全部
-
java解析xml文件四種方式的區別查看全部
-
注意document對象的導入查看全部
-
Element(元素節點)節點類型英文全稱為ELEMENT_NODE 它的nodeName返回值為element name而nodeValue的返回值為null. Attr(屬性節點)節點類型英文全稱為ATTRIBUTE_NODE 它的nodeName返回值為屬性名稱,nodeValue返回值為屬性值. Text(文本節點)節點類型英文全稱為TEXT_NODE 它的nodeName返回值為#text,nodeValue返回值為節點內容.查看全部
-
解析文件節點以及子節點的值 1.先獲取子節點,Node下有方法getChildNodes()來獲取某個節點的子節點的集合,返回NodeList類型. NodeList childNodes=book.getChildNodes()//包含book節點所有的子節點,兩個標簽之間的所有內容都看成是子節點. 2.通過childNodes的getLength()方法返回字點的個數(空格與換行字符看成為一個文本節點,標簽與結束標簽看成一個元素節點) 3.通過NodeList的item(i)獲取指定位置子節點的名稱返回Node類型.再用Node類型的getNodeName()方法就可以獲取節點名 Node childnode=childNodes.item(i); String name=childnode.getNodeName(); 可以通過Node類的getNodeType()來區分文本類型的node以及元素類型的node,看當前Node類型是否與Node."節點類型英文全稱"相同. if(childnode.getNodeType==Node.ELEMENT_NODE) {System.out.println(name)} 4.不能直接通過Node的getNodeValue()來獲取節點的值,因為元素節點的nodeValue的返回值為null而且標簽之間的文本被看做是該標簽的子節點.所以要用Node的getFirstChild()此時獲取的子節點為文本節點,Text節點類型的nodeValue返回值為節點內容,再getNodeValue()。 或者直接用Node的getTextContent()方法直接獲取節點值。 如果該Node節點還存在其他子節點并且有節點值<name><a>廣州大學</a>華軟學院</name>,那么用getFirstChild().getNodeValue()一樣是null,因為獲取的子節點仍然是element類型的 如果用Node的getTextContent(),一樣會把<a>元素節點當成是Content輸出。 結果為廣州大學華軟學院.查看全部
-
根據 DOM,XML 文檔中的每個成分都是一個節點。 DOM 是這樣規定的: 整個文檔是一個文檔節點 每個 XML 標簽是一個元素節點 包含在 XML 元素中的文本是文本節點 每一個 XML 屬性是一個屬性節點 注釋屬于注釋節點 文本總是存儲在文本節點中 在 DOM 處理中一個普遍的錯誤是,認為元素節點包含文本。 不過,元素節點的文本是存儲在文本節點中的。 在這個例子中:<year>2005</year>,元素節點 <year>,擁有一個值為 "2005" 的文本節點。 "2005" 不是 <year> 元素的值!查看全部
-
使用Dom解析xml文件的屬性節點。 在不知道節點屬性的個數和屬性名時: 1、通過document.getElementsByTagName("標簽名")獲得所有標簽名的節點,得到一個NodeList集合 2、通過NodeList.getLength()獲得集合長度,遍歷集合 3、Node node = NodeList.item(index)獲得里面的節點 4、通過NamedNodeMap attrs = node.getAttributes()獲取所有屬性集合 5、通過attrs.getLength()遍歷集合,Node attr = atrrs.item(index) 6、attr.getNodeName()獲得屬性名,attr.getNodeValue()獲取屬性值 前提已經知道book節點有且只有1個id屬性,將book節點進行強制類型轉換,轉換成element類型。 1、通過document.getElementsByTagName("標簽名")獲得所有標簽名的節點,得到一個NodeList集合 2、通過NodeList.getLength()獲得集合長度,遍歷集合 3、Element book=(Element)NodeList.item(i);//強制轉換為element類型 4、string attrValue = book.getAttribute("id"); //參數為屬性名,返回屬性值查看全部
-
JAVA讀取xml文件叫做解析 目的是獲取xml的節點名,節點值,屬性名,屬性值. 目標是解析xml文件后,JAVA程序能夠得到xml文件的所有數據. 有4種解析方法 1.DOM 2.SAX 3.DOM4J 4.JDOM 而DOM,SAX解析是java官方提供的. DOM解析方法 1.把xml文件復制到java項目中 2.創建DocumentBuilderFactory對象,用靜態方法newInstance(); 3.創建DocumentBuilder對象,用DocumentBuilderFactory對象的newDocumentBuilder(); //系統會提示要捕獲異常 4.通過DocumentBuilder的Parse(String name);來解析xml文件.此方法返回一個Document對象,導入Document的W3C那個包,//系統也會提示捕獲異常 DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance(); DocumentBuilder bf=dbf.newDocumentBuilder(); Document document=dbf.Parse("E:\\java\\text.xml");查看全部
-
XML可擴展標記語言可以對文檔和數據進行結構化處理,從而能夠在部門、客戶和供應商之間進行交換,實現動態內容生成,企業集成和應用開發,可以跨平臺傳送數據. xml文件頭要添加聲明: <?xml version="1.0" encoding="UTF-8"?> 以問號開頭,一般兼容版本為1.0,字符編碼按自己需要查看全部
舉報
0/150
提交
取消