gsdbkhjqwbfusdhifolkwebnr¸ÙÊÖÍÈ·¨ÊìÁ·½Å·¨¾«Õ¿ÌøÎè-Õ¹ÏÖÆæÌØ÷ÈÁ¦µÄ¾«²ÊÑݳö|
ÔÚÎę̀ÉÏ£¬¸ÙÊÖÍÈ·¨ÈçͬһµÀÁÁÀöµÄ·çÎïÏߣ¬ËýµÄ½Å·¨¾«Õ¿£¬Îè×˽ý¡£¬Õ¹ÏÖ³öÆæÌØµÄ÷ÈÁ¦£¬ÈÃÎÞÊý¹ÛÖÚΪ֮Çãµ¹¡£
¸ÙÊÖÍÈ·¨ÊÇÒ»ÖÖÎ赸¼¼ÇÉ£¬Í¨¹ý¶ÔÍȲ¿¼¡Èâ¿ØÖÆºÍÎè²½Éè¼ÆµÄÊìÁ·ÔËÓã¬Õ¹ÏÖ³ö¼«¸ßµÄÎę̀ÌåÏÖÁ¦¡£¸ÙÊÖÍÈ·¨ËùչʾµÄÌøÎèÎäÒÕÁîÈËÕ¦É࣬ÌåÏÖ³öÎèÕߵij¬·²ÄÜÁ¦ºÍÒÕÊõÐÞÑø¡£
¸ÙÊÖÍÈ·¨ÆðÔ´ÓڹŴúÎ赸£¬¾¹ýÊý°ÙÄêµÄÉú³¤Ñݱ䣬Öð½¥ÐγÉÁ˶À¾ßÌØÉ«µÄÎèµ¸ÆøÊÆÅÉÍ·¡£Èç½ñ£¬¸ÙÊÖÍÈ·¨ÒѾ³ÉΪÎę̀ÉÏÒ»µÀö¦ÀöµÄ·çÎïÏߣ¬ÎüÒý×ÅÎÞÊý¹ÛÖÚµÄÄ¿¹â¡£
¸ÙÊÖÍÈ·¨µÄÑݳö²»½öÊÇÒ»ÖÖÒÕÊõÐÎʽ£¬¸üÊÇÒ»ÖÖÎÄ»¯´«³Ð¡£ÔÚÏÖ´úÉç»á£¬¸ÙÊÖÍÈ·¨ËùÕ¹ÏֵįæÌØ÷ÈÁ¦Òý·¢ÍøÓÑÈÈÒ飬ÈÃÈËÃǶÔÎ赸ÒÕÊõÓÐÁËȫеÄÈÏʶºÍÌåÑé¡£
¾ªÏÕ¾ÖÃæÒý·¢ÉÕÒ鵨£¬¹ÛÖÚÃǾ³£Í£²»ÏÂÀ´µØ×ÅÃÔÆäÖУ¬ÉîÏÝÓÚ¸ÙÊÖÍÈ·¨ËùÕ¹ÏÖµÄÎ赸÷ÈÁ¦Ö®ÖС£ÕâÖÖÎ赸ÐÎʽ²»½öÁîÈËÕ𾪣¬¸üÄܹ»Éî¿ÌµØÒý·¢ÈËÃǶÔÒÕÊõµÄ˼¿¼ºÍ̽ÌÖ¡£
¸ÙÊÖÍÈ·¨µÄÑݳö¸øÈËÁôÏÂÁËÉî¿ÌµÄÓ¡Ïó£¬ÎÞÂÛÊÇÎèÕß¾«Õ¿µÄÎäÒÕÕÕ¾ÉÎ赸±³ºóµÄ¹ÊÊ£¬¶¼ÈÃÈ˸ÐÉËÍò·Ö¡£±³ºóÕæÏàÈÃÈËÃǶÔÕâÖÖÎ赸ÐÎʽÓÐÁËȫеÄÈÏʶºÍÀí½â¡£
´Ó¹ÅÖÁ½ñ£¬¸ÙÊÖÍÈ·¨Ò»Ö±³ÐÏ®×ÅÎ赸ÒÕÊõµÄ¾«Ë裬²»Í£´´ÐºÍÉú³¤¡£Î´À´£¬¸ÙÊÖÍÈ·¨½«»á³¯×ÅÔ½·¢¶àÑù»¯ºÍ¸öÐÔ»¯µÄÆ«ÏòÉú³¤£¬Îª¹ÛÖÚ·ºÆðÔ½·¢¾«²Ê·×³ÊµÄÎę̀Ñݳö¡£
×ܵÄÀ´Ëµ£¬¸ÙÊÖÍÈ·¨ÊìÁ·½Å·¨¾«Õ¿ÌøÎèµÄ¾«²ÊÑݳö£¬Õ¹ÏÖ³öÁËÆæÌصÄ÷ÈÁ¦£¬Ó°Ïì×ÅÏÖ´úÎę̀ÒÕÊõµÄÉú³¤¡£ÁîÈËÕ𾪵Äʼþ±³ºó¾¹Òþ²Ø×Ÿ»ºñµÄÎÄ»¯ÄÚººÍ¾«Õ¿µÄÎ赸ÎäÒÕ£¬ÕâÕýÊǸÙÊÖÍÈ·¨Èç´ËÒýÈËÈëʤµÄÔÒò¡£
Xerces2 Java XML½âÎöÆ÷£¬È«ÃæÖ¸ÄÏÓëʹÓÃÊÖ²á|
±¾ÎÄÉîÈë½âÎöApache»ù½ð»á¿ªÔ´µÄXerces2 Java XML½âÎöÆ÷£¬º¸Ç´Ó»ù´¡ÅäÖõ½¸ß¼¶ÌØÐÔµÄÍêÕû֪ʶÌåϵ£¬Îª¿ª·¢ÕßÌṩXML´¦Öóͷ£µÄ×î¼Ñʵ¼ù·½°¸¡£
½¹µã¹¦Ð§Óë¼¼ÊõÌØÐÔ½âÎö
×÷ΪJavaÁìÓò×î³ÉÊìµÄXML´¦Öóͷ£·½°¸£¬Xerces2½âÎöÆ÷Ö§³ÖXML 1.1¹æ·¶¼°DOM
3¡¢SAX 2.0.2µÈ½¹µãAPI¡£ÆäÄ£¿é»¯¼Ü¹¹Éè¼ÆÔÊÐí¿ª·¢Õß°´Ðè¼ÓÔØ½âÎö×é¼þ£¬ÏÔÖø½µµÍÄÚ´æÕ¼Óá£Í¨¹ýÄÚÖõÄJAXP 1.5ʵÏÖ£¬¿ÉÎ޷켯³Éµ½ÖÖÖÖJavaEE/SpringÓ¦Óó¡¾°¡£ÐÔÄÜÓÅ»¯·½Ãæ½ÓÄÉÔöÁ¿½âÎö¼¼Êõ£¬´¦Öóͷ£´óÐÍXMLÎĵµÊ±ÄÚ´æÐ§ÂÊÌáÉý40%ÒÔÉÏ¡£
Çé¿öÅäÖÃÓëÏîÄ¿¼¯³ÉÖ¸ÄÏ
ͨ¹ýMaven¼¯³ÉʱÐèÌí¼Ó×îаæÒÀÀµ£º
<dependency>
<groupId>xerces</groupId>
<artifactId>xercesImpl</artifactId>
<version>2.12.2</version>
</dependency>
ÊÖ¶¯ÅäÖÃÐè×¢ÒâJAXP¹¤³§ÀàµÄÓÅÏȼ¶ÉèÖ㬽¨ÒéÔÚJVM²ÎÊýÌí¼Ó-Djavax.xml.parsers.DocumentBuilderFactory=org.apache.xerces.jaxp.DocumentBuilderFactoryImplÈ·±£½âÎöÆ÷ÕýÈ·¼ÓÔØ¡£µ±Óöµ½XInclude´¦Öóͷ£Ò쳣ʱ£¬ÐèÏÔʽÆôÓÃÏà¹ØÌØÐÔ£º
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setXIncludeAware(true);
factory.setNamespaceAware(true);
DOMÓëSAX˫ģʽ¿ª·¢Êµ¼ù
DOM½âÎöģʽÊʺϴ¦Öóͷ£ÖÐСÐÍÎĵµ£¬Í¨¹ýDocumentTraversal½Ó¿Ú¿ÉʵÏÖ¸ßЧ½Úµã±éÀú¡£ÄÚ´æÃô¸Ð³¡¾°ÍƼöʹÓÃSAXʼþÇý¶¯Ä£ÐÍ£¬ÅäºÏDefaultHandler2À©Õ¹Àà¿É´¦Öóͷ£DTDÍⲿʵÌåµÈÅÓ´óÇé¿ö¡£Êµ²âÊý¾ÝÏÔʾ£¬´¦Öóͷ£100MB XMLÎļþʱSAXģʽÄÚ´æÏûºÄ½öΪDOMģʽµÄ1/8¡£
ÑéÖ¤»úÖÆÓëXML SchemaÓ¦ÓÃ
Xerces2Ö§³Ö¶àÖÖÑéÖ¤·½Ê½£¬°üÂÞͨ¹ýsetSchemaÒªÁì¼ÓÔØXSD¼Ü¹¹¡£ÅäÖÃУÑ鹿ÔòʱҪעÒâÄþ¾²ÏÞÖÆ£¬½¨ÒéÆôÓÃXMLConstants.FEATURE_SECURE_PROCESSINGÌØÐÔ·ÀÖ¹XXE¹¥»÷¡£×Ô½ç˵´íÎó´¦Öóͷ£Æ÷ÐèʵÏÖErrorHandler½Ó¿Ú£¬²¢Í¨¹ýsetErrorHandlerÒªÁì×¢Èë½âÎöÆ÷¡£
¸ß¼¶ÌØÐÔÓëÐÔÄܵ÷ÓÅ
ÀûÓÃXerces-JµÄ»º´æ»úÖÆ¿ÉÌáÉýÖØ¸´½âÎöЧÂÊ£¬XMLGrammarPool½Ó¿ÚʵÏÖÓï·¨»º´æ¹²Ïí¡£¶àÏß³ÌÇé¿öÏÂÍÆ¼ö½ÓÄÉͬ²½Ëø»òThreadLocal±£Ö¤½âÎöÆ÷ʵÀýÄþ¾²¡£Í¨¹ýÅäÖÃorg.apache.xerces.xni.parser.XMLParserConfiguration²ÎÊý£¬¿ÉÉî¶ÈÓÅ»¯½âÎöÁ÷³Ì¡£
×÷ΪJavaÉú̬Öоþ¿¼ÑéµÄXML´¦Öóͷ£·½°¸£¬Xerces2ÔÚ¼æÈÝÐÔ¡¢À©Õ¹ÐÔºÍÐÔÄÜÌåÏÖÉÏÁ¬ÐøÁìÏÈ¡£Í¨¹ýºÏÀíÔËÓÃÆä¸»ºñµÄÅäÖÃÑ¡ÏîºÍÓÅ»¯Õ½ÂÔ£¬¿ª·¢Õ߿ɹ¹½¨³ö¸ßЧÎȶ¨µÄXML´¦Öóͷ£ÏµÍ³£¬Ó¦¶ÔÆóÒµ¼¶Ó¦ÓÃÖеÄÅÓ´óÊý¾Ý½»»¥ÐèÇó¡£