-
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()查看全部 -
導入jar包的兩種方式:
1.通過右鍵項目,選擇build Path下的Add External Archives導入系統任意路徑下的jar包。但是這種方式并沒有將jar包真正導入項目中,一旦遷移,則會丟失
2.通過右鍵項目,新建lib文件夾,直接將jar包拷貝到lib文件夾下,然后再通過build Path將jar包導入進來查看全部 -
在JDOM中存儲對象
1.創建一個新的book類并將其實例化
Book bookEntity = new Book();
2.添加節點屬性值到book
if(attrName.equals("id")){
personEntity.setId(attrValue);
}
3.添加子節點屬性值到book
if (child.getName().equals("name")) {
bookEntity.setName(child.getValue());
}
else if (child.getName().equals("author")) {
bookEntity.setAuthor(child.getValue());
}
else if (child.getName().equals("year")) {
bookEntity.setYear(child.getValue());
}
else if (child.getName().equals("price")) {
bookEntity.setPrice(child.getValue());
}
else if (child.getName().equals("language")) {
bookEntity.setLanguage(child.getValue());
}查看全部 -
JDOM 解析時亂碼的處理步驟:
1)修改xml文件的編碼
2)將InputStream封裝為一個InputStreamReader,并在InputStreamReader的構造函數中指定正確的編碼,然后將InputStreamReader傳入到SAXBuilder中就可以處理中文亂碼了
利用代碼問題解決局部亂碼問題(需要利用InputStreamReader來解決)
(1)InputStream in=new FIleStream("book.xml");
(2)InputStreamReader isr = new InputStreamReader(in, "utf-8");
(3)Document document = saxBuilder.build(isr);查看全部 -
DOM 解析
獲取節點名、值:getNodeName() getNodeValue() getTextContent()
獲取子節點:getChildNodes() 返回 NodeList
獲取屬性節點:getAttributes() 返回 NamedNodeMap
JDOM 解析
獲取節點名、值:getName() getValue()
獲取子節點:getChildren() 返回 List<Element>
獲取屬性節點:getAttributes() 返回 List<Attribute>查看全部 -
//繼續進行解析 for?(Element?book?:?bookList)?{ ?System.out.println("===開始解析第"+(bookList.indexOf(book)+1)+"本書==="); ?//解析book的屬性 ?List<Attribute>?attrList?=?book.getAttributes(); //????//知道節點下屬性名稱時,獲取節點值 //????book.getAttributeValue("id"); ?//遍歷attrList(針對不清楚book節點下屬性的名字和數量) ?for?(Attribute?attr?:?attrList)?{ ??//遍歷屬性名 ??String?attrName?=?attr.getName(); ??//遍歷屬性值 ??String?attrValue?=?attr.getValue(); ??System.out.println("屬性名:"+attrName+"---屬性值:"+attrValue); ?} ?System.out.println("===結束解析第"+(bookList.indexOf(book)+1)+"本書==="); }
查看全部 -
JDOM的解析步驟
1.獲取SAXBuilder對象
2.將文件加載到SAXBuilder中,并獲取Document對象
3.通過Document對象獲取文件的根節點
4.有了根節點,通過根節點獲取它的孩子節點書的集合
5.循環遍歷孩子節點集合,通過getAttributes方法獲取節點的屬性Attribute集合
6.通過attribute的getName和getValue方法分別獲取屬性的名稱和值
7.獲得book下的節點,通過book節點對象的getChildren()方法獲取子節點的集合
8.再通過子節點的getName和getValue方法獲取節點名和節點的值查看全部 -
JDOM解析文件步驟
準備:導入jar包
1.創建一個SAXBuilder對象
????SAXBuilder saxbuilder=newSAXBuilder();
2.創建輸入流,將xml文件加載到輸入流中
????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集合
JDOM 開始解析前的準備工作//進行對books.xml文件的JDOM解析 //準備工作 //1.創建一個SAXBuilder的對象 SAXBuilder?saxBuilder?=?new?SAXBuilder(); InputStream?in; try?{ ?//2.創建一個輸入流,將xml文件加載到輸入流中來 ?in?=?new?FileInputStream("books.xml"); ?//3.通過saxBuilder的build方法,將輸入流加載到saxBuilder中 ?Document?document?=?saxBuilder.build(in); ?//4.通過document對象獲取xml文件的根節點 ?Element?rootElement?=?document.getRootElement(); ?//5.獲取根節點下的子節點的List集合 ?List<Element>?bookList?=?rootElement.getChildren(); }?catch?(FileNotFoundException?e)?{ ?e.printStackTrace(); }?catch?(JDOMException?e)?{ ?e.printStackTrace(); }?catch?(IOException?e)?{ ?e.printStackTrace(); }
查看全部 -
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類型的實例,屬性的意思;查看全部 -
/** ??*?獲取節點值 ??*/ ?@Override ?public?void?characters(char[]?ch,?int?start,?int?length)?throws?SAXException?{ ??super.characters(ch,?start,?length); ??String?value?=?new?String(ch,?start,?length); ??if(!value.trim().equals("")){ ???System.out.println("節點值:"+value); ??} ?}
查看全部 -
?/** ??*?用來遍歷xml文件的開始標簽 ??*/ ?@Override ?public?void?startElement(String?uri,?String?localName,?String?qName,?Attributes?attributes)?throws?SAXException?{ ??//調用DefaultHandler類的startElement()方法 ??super.startElement(uri,?localName,?qName,?attributes); ??//開始解析book元素的屬性 ??if(qName.equals("book")){ //???//已知book元素下屬性的名稱,根據屬性名稱獲取屬性值 //???String?value?=?attributes.getValue("id"); //???System.out.println("book的屬性值是:"+value); ???//不知道book元素下屬性的名稱以及個數,如何獲取屬性名以及屬性值 ???int?num?=?attributes.getLength(); ???for(int?i=0;i<num;i++){ ????System.out.print("book元素的第"+(i+1)+"個屬性名:"+attributes.getQName(i)); ????System.out.println("--屬性值:"+attributes.getValue(i)); ???} ??} ?}
查看全部 -
DOM:全部讀取先
SAX解析:通過handler處理類逐個分析每個節點,從外到內逐個解析。。一個一個來
startElement, endElement(開始標簽解析,結束標簽解析)
步驟:
1.通過SAXParserFactory的靜態newInstance()方法獲取SAXParserFactory實例factory
SAXParserFactory factory = SAXParserFactory.newInstance();
2.通過SAXParserFactory實例的newSAXParser()方法返回SAXParser實例parser
SAXParser parser = factory.newSAXParser();
parser.parse("路徑",handler類型對象);(需創建見3)
3.創建一個類繼承DefaultHandler,重寫其中一些方法進行業務處理并創建這個類的實例handler
創建一個package繼承DefaultHandler(。com那個)
startElement()
用于遍歷xml的開始標簽
endElement()
遍歷xml結束標簽
startElement
解析開始
endElement
解析結束
SAX解析xml步驟
1.通過SAXParseFactory的靜態newInstance()方法獲取SAXParserFactory實例factory
2.通過SAXParserFactory實例的newSAXParser()方法返回SAXParser實例parser
3.創建一個類繼承DefaultHandle,重寫方發進行業務已處理創建這個類的實例handle查看全部 -
SAX解析原理
查看全部 -
DOM解析XML文件的節點名與節點值
//解析book節點的子節點 NodeList?childNodes?=?book.getChildNodes(); //遍歷childNodes獲取每個節點的節點名和節點值 System.out.println("第"+(i+1)+"本書共有"+childNodes.getLength()+"個子節點"); for(int?k=0;k<childNodes.getLength();k++){ ?//區分出text類型的node以及element類型的node ?if(childNodes.item(k).getNodeType()==Node.ELEMENT_NODE){ ??//獲取element類型節點的節點名 ??System.out.print("第"+(k+1)+"個節點的節點名:"+childNodes.item(k).getNodeName()); ??//獲取element類型節點的節點值 ??//getFirstChild().getNodeValue()方法把第一個子節點的節點值輸出 ??//System.out.println("--節點值是"+childNodes.item(k).getFirstChild().getNodeValue()); ??//getTextContent()方法把element類型的node中的文本全部輸出 ??System.out.println("--節點值:"+childNodes.item(k).getTextContent()); ?} }
查看全部 -
DOM解析XML文件的屬性名和屬性值
??//創建一個DocumentBuilderFactory的對象 ??DocumentBuilderFactory?dbf?=?DocumentBuilderFactory.newInstance(); ?? ??//創建一個DocumentBuilder的對象 ??try?{ ???//創建DocumentBuilder對象 ???DocumentBuilder?db?=?dbf.newDocumentBuilder(); ???//通過DocumentBuilder對象的parser方法加載books.xml文件到當前項目下 ???Document?document?=?db.parse("books.xml"); ???//獲取所有book節點的集合 ???NodeList?bookList?=?document.getElementsByTagName("book"); ???//通過NodeList的getLength()方法獲取bookList的長度 ???System.out.println("一共有"+bookList.getLength()+"本書"); ???//遍歷每一個book節點 ???for(int?i=0;i<bookList.getLength();i++){ ????//前提:不知道屬性名和屬性個數 //????//通過item(i)方法獲取一個book節點,NodeList的索引值從0開始 //????Node?book?=?bookList.item(i); //????//獲取book節點的所有屬性集合 //????NamedNodeMap?attrs?=?book.getAttributes(); //????System.out.println("第"+(i+1)+"本書共有"+attrs.getLength()+"個屬性"); //????//遍歷book的屬性 //????for(int?j=0;j<attrs.getLength();j++){ //?????//通過item(index)方法獲取book節點的某一個屬性 //?????Node?attr?=?attrs.item(j); //?????//獲取屬性名 //?????System.out.print("屬性名:"+attr.getNodeName()); //?????//獲取屬性值 //?????System.out.println("--屬性值:"+attr.getNodeValue()); //????} ???? ????//前提:已經知道book節點有且只能有1個id屬性 ????//將book節點進行強制類型轉換,轉換成Element類型 ????Element?book?=?(Element)bookList.item(i); ????//通過getAttribute("id")方法獲取屬性值 ????String?attrValue?=?book.getAttribute("id"); ????System.out.println("id屬性的屬性值為"+attrValue); ???? ???} ??}?catch?(ParserConfigurationException?e)?{ ???e.printStackTrace(); ??}?catch?(SAXException?e)?{ ???e.printStackTrace(); ??}?catch?(IOException?e)?{ ???e.printStackTrace(); ??}
查看全部
舉報