-
解析子節點的信息 Iterator itt = book.elementIterator(); while(itt.hasNext()){ Element bookchild = (Element)itt.next(); bookchild.getName(); bookchild.getStringValue(); } 獲取子節點的節點值時用getStringValue()的方法。查看全部
-
DOM4J 解析 xml 文件 1、創建一個 SAXReader 對象 SAXReader saxReader = new SAXReader(); 2、將 xml 文件加載到 SAXReader 中,并獲取 document 對象 Document document = saxReader.read(new file("src/res/book.xml")); 3、通過 getRootElement() 獲取根節點元素 Element employeeRoot = document.getRootElement(); 4、通過 elementIterator() 獲取子節點元素,返回 Iterator 返回迭代器 Iterator eles = employeeRoot.elementIterator(); 5、通過 while 遍歷迭代器 while(eles.hasNest()){ Element ele = (Element)eles.next();} 6、獲取屬性節點類似 JDOM 解析 List<Attribute> attrs = ele.attributes(); 7、獲取元素節點名、值 ele.getName() ele.getStringValue()/ele.getText() 8、獲取屬性節點名、值 ele.getName() ele.geValue()查看全部
-
JDOM解析亂碼處理 1.修改xml第一行的encoding屬性 2.在代碼中處理,應用IO流知識 //創建輸入流,將XML文件加載到輸入流中 InputStream in = new FileInputStream("src/book.xml"); //使用包裝流InputStreamReader進行讀取編碼的指定 InputStreamReader isr = new InputStreamReader(in,"UTF-8");查看全部
-
在jDOM中無論是什么樣的節點他都有一個getChildren的方法 JDOM 解析 獲取節點名、值:getName() getValue() 獲取子節點:getChildren() 返回 List<Element> 獲取屬性節點:getAttributes() 返回 List<Attribute> DOM 解析 獲取節點名、值:getNodeName() getNodeValue() getTextContent() 獲取子節點:getChildNodes() 返回 NodeList 獲取屬性節點:getAttributes() 返回 NamedNodeMap查看全部
-
JDOM解析節點屬性 1、使用 foreach 遍歷子元素節點時,獲取第幾本使用 indexOf + 1(原因:indexOf從0開始) for(Element book : booklist){ booklist.indexOf(book)+1; } 2、JDOM中的Element得到的Attribute的getValue都是有實際值的文本,getValue不保存空格換行等組成的文本查看全部
-
JDOM解析文件 需要jdom-2.0.5.jar包(最新) 1.創建一個SAXBuilder對象 SAXBuilder saxbuilder=newSAXBuilder(); 2.創建輸入流,將xml文件加載到輸入流中(拋出FileNotFoundException) Inputstream in=new FileInputstream("xxx.xml"); 3.通過SAXBuilder的Build方法將輸入流加載到saxb中獲取dom對象 Document doc = saxbuilder.build(in); 4.通過document對象獲取xml文件的根結點 Element rootElement =doc.getRootElement(); 5.獲取根結點下的子節點的List集合 List<Element> personList = rootEle.getChildren();查看全部
-
解析的時候,是startElement-characters-endElement , characters解析完一個屬性,就到endElement,然后又解析一個屬性又到endElement,最后解析完全部屬性,到endElement又到startElement開始下一個節點。 xml的SAX解析并 將解析的內容及xml結構形式保存至Java對象中。 SAX解析: 1、獲取一個SAXParserFactory的實例:SAXParserFactory factory = SAXParserFactory.newInstance(); 2、通過factory獲取SAXParser實例:SAXParser parser = factory.newSAXParser(); 3、創建SAXParserHandler對象:SAXParserHandler handler = new SAXParserHandler(); 4、將xml文件和解析方式handler加載到SAXParser實例:parser.parse("books.xml",handler); 解析的時候,是startElement-characters-endElement , characters解析完一個屬性,就到endElement,然后又解析一個屬性又到endElement,最后解析完全部屬性,到endElement又到startElement開始下一個節點。 ArrayList保存對象 ArrayList<Book> BookList=new ArrayList<Book>(); BookList.add(book);book=null;后繼續遍歷 public void startElement(String uri, String localName, String qName,Attributes attributes) throws SAXException// qName是String類型節點名稱;attributes是Attributes類型的實例,屬性的意思;查看全部
-
SAX解析XML的速度比DOM的塊, SAX的解析XML的解析器,需要重寫startElement()開始解析的方法and endElemaent()方法 結束解析的方法and characters()方法 重寫charaters()方法時,讀取節點值(去除空的節點值) if(!value.trim().equals("")){ System.out.println(value); } 每次遇到標簽調用characters方法的時候它的字符數組ch實際上就是我們整個的book xml文檔的內容。查看全部
-
handler開始解析 走到每一個節點都調用startElement(); 情況1. 已知節點的屬性名和屬性個數 -> attributes。getValue("屬性名"); 情況2. 不知道節點的屬性名和屬性個數 -> 遍歷到attributes.getLength(); -> 屬性名 : attributes.getQname() 屬性值: attributes.getValue("第幾個屬性"); 每走到一個開始標簽他都會調用一個startElement方法。相同,每遍歷一個結束標簽他也會調用一個endElement方法。查看全部
-
DOM解析原理: 先把XML文件整個加載到內存中,在逐個解析。 SAX解析原理: 通過自己創建的Handler類,去逐個分析遇到的每一個節點;(節點分析是從最外層向里層逐個開始) startElement方法用來遍歷xml文件的開始標簽。endElement方法用來遍歷xml文件的結束標簽。startDocument方法用來標識解析開始。endDocument用來標識解析結束。 SAX解析xml步驟 1.通過SAXParseFactory的靜態newInstance()方法獲取SAXParserFactory實例factory 2.通過SAXParserFactory實例的newSAXParser()方法返回SAXParser實例parser 3.創建一個類繼承DefaultHandle,重寫方法進行業務處理并創建這個類的實例handle查看全部
-
常用節點類型。 Element(NodeType:1;NodeName:元素名稱;NodeValue:null) Attr(NodeType:2;NodeName:屬性名稱;NodeValue:屬性值) Text(NodeType:3;NodeName:#text;NodeValue:節點內容) 1.getFirstChild.getNodeValue():該節點下第一子節點的值 2.getTextContent() :該節點下包括后代節點里的文本內容 NodeList childNodes = book.getChildNodes();獲取子節點 空白和換行符也算作一個子節點~~~ ChildNodes.item(i).getFirstChild().getNOdeValue()和 ChildNodes.item(i).getTextContent()的區別 子節點中還包含其他子節點時,后者可以把子節點的值都顯示出來。 getTextContent()獲取節點值和所有子節點. getNodeType().............有text,element,attr三個 而Element如果要獲取值,必須讀取它的子節點,<name>content</name>認為content是namae的子節點; 兩種方法: getFirstChild().getNodeName();(獲取子節點再獲取值) getTextContent();(獲取content方法)查看全部
-
使用Dom解析xml文件的屬性節點。 在不知道節點屬性的個數和屬性名時: 1、通過document.getElementByTagName("標簽名")獲得所有標簽名的節點,得到一個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.getElementByTagName("標簽名")獲得所有標簽名的節點,得到一個NodeList集合 2、通過NodeList.getLength()獲得集合長度,遍歷集合 3、element book=(element)bookList.item(i);//強制轉換為element類型 4、string attrValue = book.getAttribute("id");查看全部
-
獲取xml文件內容的 四種解析方式:DOM SAX DOM4J JDOM DOM使用步驟: 準備工作 1、創建一個DocumentBuilderFactory的對象 DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance(); 2、創建一個DocumentBuilder的對象 DocumentBuilder db=dbf.newDocumentBuilder(); 3、通過DocumentBuilder對象的parser方法加載xml文件到當前項目 Document document = db.parse("books.xml"); DocumentBuilder對象的parse(String fileName)方法返回的是一個Document類型的返回值,此處注意Document類型為org.w3c.dom包中的類型。 AVA解析XML文件(4種) DOM、SAX :java 官方方式,不需要下載jar包 DOM4J、JDOM :第三方,需要網上下載jar包查看全部
-
DOM4J 解析 xml 文件 1、創建一個 SAXReader 對象 SAXReader saxReader = new SAXReader(); 2、將 xml 文件加載到 SAXReader 中,并獲取 document 對象 Document document = saxReader.read(fileName); 3、通過 getRootElement() 獲取根節點元素 Element employeeRoot = document.getRootElement(); 4、通過 elementIterator() 獲取子節點元素,返回 Iterator 返回迭代器 Iterator eles = eleRoot.elementIterator(); 5、通過 while 遍歷迭代器 while(eles.hasNest()){ Element ele = (Element)eles.next();} 6、獲取屬性節點類似 JDOM 解析 List<Attribute> attrs = ele.attributes(); 7、獲取元素節點名、值 ele.getName() ele.getStringValue()/ele.getText() 8、獲取屬性節點名、值 ele.getName() ele.geValue()查看全部
-
---------------------------應用JDOM解析子節點屬性------------------------------ //通過增強for循環進行遍歷子節點集合 for(Element person : personList){ System.out.print("======開始解析第" + personList.indexOf(person)+1 + "個人======"); //解析person的屬性 List<Attribute> attrList = person.getAttributes();//適用于我們不知道里面有多少屬性 person.getAttributeValue("id");//適用于我們知道子節點屬性的名字直接獲取其屬性值 //遍歷屬性 for(Attribute attr : attrList){ //獲取屬性名 String attrName = attr.getName(); //獲取屬性值 String attrValue = attr.getValue(); System.out.print("屬性名:" + ); } System.out.println("======結束解析第" + personList.indexOf(person)+1 + "個人======"); }查看全部
舉報
0/150
提交
取消