Java and XML_¶ÁÊé±Ê¼Ç_2010 05 16
2010-05-16
Èý¡¢½âÎöXMLÎĵµ
l Xerces½âÎöÆ÷¡¢SAXÀàºÍ½Ó¿Ú
l SAXÔĶÁÆ÷
n Ê×ÏÈÒªµÃµ½Ò»¸ö·ûºÏSAX org.xml.sax.XMLReader½Ó¿Ú¹æ·¶µÄÀý×Ó£¬Õâ¸ö½Ó¿Ú¶¨ÒåÁ˽âÎöÐÐΪ²¢ÔÊÐíÉèÖÃÄ³Ð©ÌØÕ÷ºÍÊôÐÔ¡£¸Ã½Ó¿ÚÌæ»»ÁËSAX1.0ÖеÄorg.xml.sax.Parser
import org.apache.xerces.parsers.SAXParser;
import org.xml.sax.XMLReader;
XMLReader parser = new SAXParser();
parser.parse(uri);
n µ±Ò»¸ö½âÎöÆ÷µ÷Èë²¢×¼±¸¾ÍÐ÷ºó£¬Ëü¾Í¿ÉÒÔ¶ÔÎĵµ½øÐнâÎöÁË£¬Í¨³£ÓÉparse()·½·¨µÄorg.xml.sax.XMLReaderÀ´´¦ÀíÒ»¸öorg.xml.sax.InputSource»òÕßÒ»¸öURI´®¡£
n ÄÚÈݹÜÀíÆ÷£ºÔÚ½âÎö½øÐÐʱ£¬ÎªÊ¹Ó¦ÓóÌÐòÓÐЧµØ´¦ÀíXMLÊý¾Ý£¬±ØÐëÓÃSAX½âÎöÆ÷µÇ¼Ç¹ÜÀíÆ÷£¨handler£©¡£¹ÜÀíÆ÷ÊÇÒ»×éSAX¶¨ÒåµÄ»Øµ÷£¬ËüÄÜÔÚÎĵµ½âÎö¹ý³ÌÖиøÖØÒªµÄʼþ²åÈëÏàÓ¦µÄÓ¦ÓóÌÐò´úÂë¡£ÕâЩʼþÓëÎĵµ½âÎöͬʱ½øÐС£SAX³ÉΪһ¸öÇ¿´ó½Ó¿ÚµÄÔÒòÖ®Ò»£º²»ÐèÒªÔÚÆðʼʱ¾Í½«È«²¿Îĵµ¶ÁÈëÄڴ棬¶þÊ®¿ÉÒÔ¶ÔÆä½øÐÐÁ¬Ðø´¦Àí¡£
n SAX2.0¶¨ÒåÁËËĸöºËÐĵĹÜÀíÆ÷½Ó¿Ú£ºorg.xml.sax.ContentHandler¡¢org.xml.sax.ErrorHandler¡¢org.xml.sax.DTDHandler¡¢org.xml.sax.EntityResolver¡£½âÎö¹ý³ÌÖУ¬Ö´ÐÐÌØ¶¨¶¯×÷µÄ¶¨ÖÆÓ¦ÓÃÀàÖ§³ÖËùÓнӿڣ¬ÕâЩִÐÐÀà¿ÉÒÔÓÃSetContentHandler()¡¢setDTDHandler()ºÍsetEntityResolver()µÄ·½·¨ÔÚ½âÎöÆ÷ÉÏ×¢²á¡£
u Îĵµ¶¨Î»Æ÷£ºorg.xml.sax.Locatorµ±Ä³»Øµ÷ʼþ³öÏÖʱ£¬Íê³É´¦ÀíµÄÀà±ØÐë´ÓSAX½âÎöÆ÷µÄXMLÎĵµÖÐÕÒµ½ÏàÓ¦µÄλÖá£
u ÎĵµµÄ¿ªÍ·ºÍ½áβ£ºstartDocument()ºÍendDocument()
startDocument()ÔÚÈÎºÎÆäËû»Øµ÷֮ǰ±»µ÷ÓÃ
endDocument()¾³£ÊÇÔÚËùÓйÜÀíÆ÷ÖÐ×îºó±»µ÷Óõķţ¬Èô²»¿É»Ö¸´ÐÔ´íÎó·¢Éú£¬ÔòErrorHandler»Øµ÷·½·¨½«±»»½ÐÑ£¬Í¬Ê±È¥µ÷ÓÃendDocument()½áÊø´Ë½âÎö¹ý³Ì¡£
ÕâÁ½¸ö»Øµ÷·½·¨¶¼»áÅ׳öSAXException£¬ÕâÒ²ÊÇSAXʼþ»áÅ׳öÒì³£µÄΨһ·½Ê½
u ´¦ÀíÖ¸ÁSAX¶¨ÒåÁËÌØÊâµÄ»Øµ÷À´´¦ÀíÖ¸Áî¡£ÕâÖз½·¨½ÓÊÜ´¦ÀíÖ¸ÁîµÄÄ¿±êºÍÄÇЩ´«µÝ¸ø´¦ÀíÖ¸ÁîµÄËùÓÐÊý¾Ý¡£
u Ãû×Ö¿Õ¼äµÄ»Øµ÷£ºÓÐÁ½ÖÖSAX»Øµ÷º¯ÊýרÃÅÓÃÓÚ´¦ÀíÃû×ֿռ䣨¾¡¹ÜÔªËØ»Øµ÷ҲʹÓÃËüÃÇ£©¡£µ±½âÎöÆ÷µ½µ×ǰ׺ӳÏñ£¨prefix mapping£©µÄ¿ªÍ·ºÍ½áβʱ£¬ËüÃDZ»»½ÐÑ
startPrefixMapping()»Øµ÷¸ø³öÓëURIÏà¹ØµÄÃû×Ö¿Õ¼äǰ׺¡£Ç°×ºÓ³Ïñ»Øµ÷ÔÚÉùÃ÷Ãû×Ö¿Õ¼äµÄÔªËØ»Øµ÷֮ǰÁ¢¼´·¢Éú¡£
endPrefixMapping()»Øµ÷ÔÚÉùÃ÷Ó³ÏñµÄÔªËØµÄ½áÊø±êǩ֮ºóÁ¢¼´³öÏÖ
u Ô
Ïà¹ØÎĵµ£º
ÖÕÓÚÍê³ÉÁË´®¿ÚµÄ±àд£¬¹¦Äܼܺòµ¥£¬ÈçÏ£º
×ö³öÒ»¸ö¼òµ¥½çÃæ£¬Ïò´®¿Ú·¢ËÍÌØ¶¨µÄÃüÁ´®¿ÚÉϽÓÓй©²âÊÔÓõĴ®¿ÚÉ豸£©£¬½ÓÊÕÉ豸·µ»ØµÄÊý¾ÝÔÚ½çÃæÉÏÏÔʾ£º
import gnu.io.CommPortIdentifier;
import gnu.io.PortInUseException;
import gnu.io.SerialPort;
import gnu.io.Ser ......
ÊÇ·ñÑá¾ëÁËÓÃxmlÎļþÀ´×öMagentoµÄÒ³Ãæ²¼¾Ö£¬ÊǵϰÀ´ÊÔÊÔÏÂÃæÕâÖÖ·½Ê½£¬°Ñ²¼¾Ö´úÂëдµ½controller ÀïÃæ
public function mycoolAction()
{
/* ... Some code ...*/
$update = $this->getLayout()->getUpdate();
/* ... Some code ...*/
$this->addActionLayoutHandles();
/* ... Some code ...*/
......
ÒÑÖªÓÐÒ»¸öXMLÎļþ£¨bookstore.xml£©ÈçÏ£º
<?xml version="1.0" encoding="gb2312"?>
<bookstore>
<book genre="fantasy" ISBN="2-3631-4">
<title>Oberon's Legacy</title>
<author>Corets, Eva</author>
&nb ......
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Xml;
using System.Text; ......
¶àÏß³ÌÖ®¼äÐèҪе÷¹¤×÷¡£ÀýÈ磬ä¯ÀÀÆ÷µÄÒ»¸öÏÔʾͼƬµÄÏß³ÌdisplayThreadÏëÒªÖ´ÐÐÏÔʾͼƬµÄÈÎÎñ£¬±ØÐëµÈ´ýÏÂÔØÏß³ÌdownloadThread½«¸ÃͼƬÏÂÔØÍê±Ï¡£Èç¹ûͼƬ»¹Ã»ÓÐÏÂÔØÍ꣬displayThread¿ÉÒÔÔÝÍ££¬µ±downloadThreadÍê³ÉÁËÈÎÎñºó£¬ÔÙ֪ͨdisplayThread“ͼƬ׼±¸Íê±Ï£¬¿ÉÒÔÏÔʾÁË”£¬Õâʱ£¬displayThread¼ÌÐøÖ´ ......