# XML è§£ææ¹å¼å¯¹æ¯ https://blog.csdn.net/wuwenxiang91322/article/details/10230363 ## DOM DOMçå ¨ç§°æ¯Document ObjectModelï¼ä¹å³ææ¡£å¯¹è±¡æ¨¡åãå¨åºç¨ç¨åºä¸ï¼åºäºDOMçXMLåæå¨å°ä¸ä¸ªXMLææ¡£è½¬æ¢æä¸ä¸ªå¯¹è±¡æ¨¡åçéåï¼é常称DOMæ ï¼ï¼åºç¨ç¨åºæ£æ¯éè¿å¯¹è¿ä¸ªå¯¹è±¡æ¨¡åçæä½ï¼æ¥å®ç°å¯¹XMLææ¡£æ°æ®çæä½ãéè¿DOMæ¥å£ï¼åºç¨ç¨åºå¯ä»¥å¨ä»»ä½æ¶å访é®XMLææ¡£ä¸çä»»ä½ä¸é¨åæ°æ®ï¼å æ¤ï¼è¿ç§å©ç¨DOMæ¥å£çæºå¶ä¹è¢«ç§°ä½éæºè®¿é®æºå¶ã DOMæ¥å£æä¾äºä¸ç§éè¿åå±å¯¹è±¡æ¨¡åæ¥è®¿é®XMLææ¡£ä¿¡æ¯çæ¹å¼ï¼è¿äºåå±å¯¹è±¡æ¨¡å便®XMLçææ¡£ç»æå½¢æäºä¸æ£µèç¹æ ãæ è®ºXMLææ¡£ä¸ææè¿°çæ¯ä»ä¹ç±»åçä¿¡æ¯ï¼å³ä¾¿æ¯å¶è¡¨æ°æ®ã项ç®å表æä¸ä¸ªææ¡£ï¼å©ç¨DOMæçæç模å齿¯èç¹æ çå½¢å¼ãä¹å°±æ¯è¯´ï¼DOM强å¶ä½¿ç¨æ æ¨¡åæ¥è®¿é®XMLææ¡£ä¸çä¿¡æ¯ãç±äºXMLæ¬è´¨ä¸å°±æ¯ä¸ç§åå±ç»æï¼æä»¥è¿ç§æè¿°æ¹æ³æ¯ç¸å½ææçã DOMæ ææä¾çéæºè®¿é®æ¹å¼ç»åºç¨ç¨åºçå¼å带æ¥äºå¾å¤§ççµæ´»æ§ï¼å®å¯ä»¥ä»»æå°æ§å¶æ´ä¸ªXMLææ¡£ä¸çå 容ãç¶èï¼ç±äºDOMåæå¨ææ´ä¸ªXMLææ¡£è½¬åæDOMæ æ¾å¨äºå åä¸ï¼å æ¤ï¼å½ææ¡£æ¯è¾å¤§æè ç»ææ¯è¾å¤ææ¶ï¼å¯¹å åç鿱就æ¯è¾é«ãèä¸ï¼å¯¹äºç»æå¤æçæ çéå乿¯ä¸é¡¹èæ¶çæä½ãæä»¥ï¼DOMåæå¨å¯¹æºå¨æ§è½çè¦æ±æ¯è¾é«ï¼å®ç°æçä¸ååçæ³ãä¸è¿ï¼ç±äºDOMåæå¨æéç¨çæ ç»æçææ³ä¸XMLææ¡£çç»æç¸å»åï¼åæ¶é´äºéæºè®¿é®æå¸¦æ¥çæ¹ä¾¿ï¼å æ¤ï¼DOMåæå¨è¿æ¯æå¾å¹¿æ³ç使ç¨ä»·å¼çã ## SAX SAXçå ¨ç§°æ¯Simple APIs for XMLï¼ä¹å³XMLç®ååºç¨ç¨åºæ¥å£ãä¸DOMä¸åï¼SAXæä¾çè®¿é®æ¨¡å¼æ¯ä¸ç§é¡ºåºæ¨¡å¼ï¼è¿æ¯ä¸ç§å¿«é读åXMLæ°æ®çæ¹å¼ãå½ä½¿ç¨SAXåæå¨å¯¹XMLææ¡£è¿è¡åææ¶ï¼ä¼è§¦åä¸ç³»åäºä»¶ï¼å¹¶æ¿æ´»ç¸åºçäºä»¶å¤ç彿°ï¼åºç¨ç¨åºéè¿è¿äºäºä»¶å¤ç彿°å®ç°å¯¹XMLææ¡£ç访é®ï¼å èSAXæ¥å£ä¹è¢«ç§°ä½äºä»¶é©±å¨æ¥å£ã â SAX è§£æå¨éç¨äºåºäºäºä»¶ç模åï¼å®å¨è§£æ XML ææ¡£çæ¶åå¯ä»¥è§¦åä¸ç³»åçäºä»¶ï¼å½åç°ç»å®çtagçæ¶åï¼å®å¯ä»¥æ¿æ´»ä¸ä¸ªåè°æ¹æ³ï¼åè¯è¯¥æ¹æ³å¶å®çæ ç¾å·²ç»æ¾å°ãSAX 对å åçè¦æ±é叏伿¯è¾ä½ï¼å 为å®è®©å¼å人åèªå·±æ¥å³å®æè¦å¤ççtagãç¹å«æ¯å½å¼å人ååªéè¦å¤çææ¡£ä¸æå å«çé¨åæ°æ®æ¶ï¼SAX è¿ç§æ©å±è½åå¾å°äºæ´å¥½çä½ç°ãä½ç¨ SAX è§£æå¨çæ¶åç¼ç å·¥ä½ä¼æ¯è¾å°é¾ï¼èä¸å¾é¾åæ¶è®¿é®åä¸ä¸ªææ¡£ä¸çå¤å¤ä¸åæ°æ® ## JDOM JDOMæ¯ä¸ä¸ªå¼æºé¡¹ç®ï¼å®åºäºæ åç»æï¼å©ç¨çº¯JAVAçææ¯å¯¹XMLææ¡£å®ç°è§£æãçæãåºåå以åå¤ç§æä½ãï¼http://jdom.orgï¼ â¢JDOM ç´æ¥ä¸ºJAVAç¼ç¨æå¡ãå®å©ç¨æ´ä¸ºå¼ºæåçJAVAè¯è¨ç诸å¤ç¹æ§ï¼æ¹æ³éè½½ãéåæ¦å¿µçï¼ï¼æSAXåDOMçåè½ææå°ç»åèµ·æ¥ã â¢JDOMæ¯ç¨Javaè¯è¨è¯»ãåãæä½XMLçæ°API彿°ãå¨ç´æ¥ãç®åå髿çåæä¸ï¼è¿äºAPI彿°è¢«æå¤§é度çä¼åã ãJDOM ä¸ DOM ä¸»è¦æä¸¤æ¹é¢ä¸åãé¦å ï¼JDOM ä» ä½¿ç¨å ·ä½ç±»èä¸ä½¿ç¨æ¥å£ãè¿å¨æäºæ¹é¢ç®åäº APIï¼ä½æ¯ä¹éå¶äºçµæ´»æ§ã第äºï¼API 大é使ç¨äº Collections ç±»ï¼ç®åäºé£äºå·²ç»çæè¿äºç±»ç Java å¼åè ç使ç¨ã ããJDOM ææ¡£å£°æå ¶ç®çæ¯âä½¿ç¨ 20%ï¼ææ´å°ï¼çç²¾åè§£å³ 80%ï¼ææ´å¤ï¼Java/XML é®é¢âï¼æ ¹æ®å¦ä¹ æ²çº¿åå®ä¸º 20%ï¼ãJDOM 对äºå¤§å¤æ° Java/XML åºç¨ç¨åºæ¥è¯´å½ç¶æ¯æç¨çï¼å¹¶ä¸å¤§å¤æ°å¼åè åç° API æ¯ DOM 容æçè§£å¾å¤ãJDOM è¿å æ¬å¯¹ç¨åºè¡ä¸ºçç¸å½å¹¿æ³æ£æ¥ä»¥é²æ¢ç¨æ·åä»»ä½å¨ XML 䏿 æä¹çäºãç¶èï¼å®ä»éè¦æ¨å åçè§£ XML 以便åä¸äºè¶ åºåºæ¬çå·¥ä½ï¼æè çè³çè§£æäºæ åµä¸çé误ï¼ãè¿ä¹è®¸æ¯æ¯å¦ä¹ DOM æ JDOM æ¥å£é½æ´ææä¹çå·¥ä½ã ããJDOM èªèº«ä¸å å«è§£æå¨ãå®éå¸¸ä½¿ç¨ SAX2 è§£æå¨æ¥è§£æåéªè¯è¾å ¥ XML ææ¡£ï¼å°½ç®¡å®è¿å¯ä»¥å°ä»¥åæé ç DOM 表示ä½ä¸ºè¾å ¥ï¼ãå®å å«ä¸äºè½¬æ¢å¨ä»¥å° JDOM 表示è¾åºæ SAX2 äºä»¶æµãDOM æ¨¡åæ XML ææ¬ææ¡£ãJDOM æ¯å¨ Apache 许å¯è¯åä½ä¸åå¸ç弿¾æºç ã ## Dom4j å®ç½ï¼DOM4Jhttp://dom4j.sourceforge.net/ è½ç¶ DOM4J 代表äºå®å ¨ç¬ç«çå¼åç»æï¼ä½æåï¼å®æ¯ JDOM çä¸ç§æºè½åæ¯ãå®åå¹¶äºè®¸å¤è¶ åºåºæ¬ XML ææ¡£è¡¨ç¤ºçåè½ï¼å æ¬éæç XPath æ¯æãXML Schema æ¯æä»¥åç¨äºå¤§ææ¡£ææµåææ¡£çåºäºäºä»¶çå¤çãå®è¿æä¾äºæå»ºææ¡£è¡¨ç¤ºçé项ï¼å®éè¿ DOM4J API åæ å DOM æ¥å£å ·æå¹¶è¡è®¿é®åè½ãä» 2000 ä¸åå¹´å¼å§ï¼å®å°±ä¸ç´å¤äºå¼åä¹ä¸ã ããä¸ºæ¯æææè¿äºåè½ï¼DOM4J ä½¿ç¨æ¥å£åæ½è±¡åºæ¬ç±»æ¹æ³ãDOM4J 大é使ç¨äº API ä¸ç Collections ç±»ï¼ä½æ¯å¨è®¸å¤æ åµä¸ï¼å®è¿æä¾ä¸äºæ¿ä»£æ¹æ³ä»¥å 许æ´å¥½çæ§è½ææ´ç´æ¥çç¼ç æ¹æ³ãç´æ¥å¥½å¤æ¯ï¼è½ç¶ DOM4J ä»åºäºæ´å¤æç API ç代价ï¼ä½æ¯å®æä¾äºæ¯ JDOM 大å¾å¤ççµæ´»æ§ã ãã卿·»å çµæ´»æ§ãXPath éæåå¯¹å¤§ææ¡£å¤ççç®æ æ¶ï¼DOM4J çç®æ ä¸ JDOM æ¯ä¸æ ·çï¼é对 Java å¼åè çæç¨æ§åç´è§æä½ãå®è¿è´åäºæä¸ºæ¯ JDOM æ´å®æ´çè§£å³æ¹æ¡ï¼å®ç°å¨æ¬è´¨ä¸å¤çææ Java/XML é®é¢çç®æ ãå¨å®æè¯¥ç®æ æ¶ï¼å®æ¯ JDOM æ´å°å¼ºè°é²æ¢ä¸æ£ç¡®çåºç¨ç¨åºè¡ä¸ºã ããDOM4J æ¯ä¸ä¸ªé常é常ä¼ç§çJava XML APIï¼å ·ææ§è½ä¼å¼ãåè½å¼ºå¤§åæç«¯æç¨ä½¿ç¨çç¹ç¹ï¼åæ¶å®ä¹æ¯ä¸ä¸ªå¼æ¾æºä»£ç ç软件ãå¦ä»ä½ å¯ä»¥çå°è¶æ¥è¶å¤ç Java 软件é½å¨ä½¿ç¨ DOM4J æ¥è¯»å XMLï¼ç¹å«å¼å¾ä¸æçæ¯è¿ Sun ç JAXM ä¹å¨ç¨ DOM4Jã **Domè§£æï¼** â å¨å åä¸å建ä¸ä¸ªDOMæ ï¼è¯¥ç»æé常éè¦å è½½æ´ä¸ªææ¡£ç¶åæè½åå·¥ä½ãç±äºå®æ¯åºäºä¿¡æ¯å±æ¬¡çï¼å èDOM被认为æ¯åºäºæ æåºäºå¯¹è±¡çï¼æ å¨å å䏿¯æä¹ çï¼å æ¤å¯ä»¥ä¿®æ¹å®ä»¥ä¾¿åºç¨ç¨åºè½å¯¹æ°æ®åç»æä½åºæ´æ¹è½éæºè®¿é®æä»¶å 容ï¼ä¹å¯ä»¥ä¿®æ¹åæä»¶å 容. **SAXè§£æ ï¼** â SAXå¤ççä¼ç¹éå¸¸ç±»ä¼¼äºæµåªä½çä¼ç¹ãåæè½å¤ç«å³å¼å§ï¼è䏿¯çå¾ ææçæ°æ®è¢«å¤çãSAXè§£æå¨éç¨äºåºäºäºä»¶ç模åï¼å®å¨è§£æXMLææ¡£çæ¶åå¯ä»¥è§¦åä¸ç³»åçäºä»¶ï¼å½åç°ç»å®çtagçæ¶åï¼å®å¯ä»¥æ¿æ´»ä¸ä¸ªåè°æ¹æ³ï¼åè¯è¯¥æ¹æ³å¶å®çæ ç¾å·²ç»æ¾å°ãèä¸ï¼ç±äºåºç¨ç¨åºåªæ¯å¨è¯»åæ°æ®æ¶æ£æ¥æ°æ®ï¼å æ¤ä¸éè¦å°æ°æ®åå¨å¨å åä¸ãè¿å¯¹äºå¤§åææ¡£æ¥è¯´æ¯ä¸ªå·¨å¤§çä¼ç¹çº¿æ§è§£æï¼ä¸è½éæºè®¿é®ï¼ä¹æ æ³ä¿®æ¹åæä»¶ **JDOMè§£æï¼** â JDOMçç®çæ¯æä¸ºJavaç¹å®ææ¡£æ¨¡å,å®ç®åä¸XMLç交äºå¹¶ä¸æ¯ä½¿ç¨DOMå®ç°æ´å¿«.JDOMä» ä½¿ç¨å ·ä½ç±»èä¸ä½¿ç¨æ¥å£ãè¿å¨æäºæ¹é¢ç®åäºAPIï¼ä½æ¯ä¹éå¶äºçµæ´»æ§ã第äºï¼API大é使ç¨äºCollectionsç±»ï¼ç®åäºé£äºå·²ç»çæè¿äºç±»çJavaå¼åè ç使ç¨ã **DOM4jï¼** â è§£æ DOM4Jä½¿ç¨æ¥å£åæ½è±¡åºæ¬ç±»æ¹æ³ãDOM4J大é使ç¨äºAPIä¸çCollectionsç±»ï¼ä½æ¯å¨è®¸å¤æ åµä¸ï¼å®è¿æä¾ä¸äºæ¿ä»£æ¹æ³ä»¥å 许æ´å¥½çæ§è½ææ´ç´æ¥çç¼ç æ¹æ³ãç´æ¥å¥½å¤æ¯ï¼è½ç¶DOM4Jä»åºäºæ´å¤æçAPIç代价ï¼ä½æ¯å®æä¾äºæ¯JDOM大å¾å¤ççµæ´»æ§ã