??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲天堂视频在线观看,在线一区二区三区做爰视频网站,亚洲视频精品http://www.aygfsteel.com/keweibo/category/25831.html一专多? Java,Powerbuilder,Delphizh-cnSun, 28 Nov 2010 12:28:46 GMTSun, 28 Nov 2010 12:28:46 GMT60SAX 解析 http://www.aygfsteel.com/keweibo/articles/339060.htmlKEKEThu, 25 Nov 2010 12:47:00 GMThttp://www.aygfsteel.com/keweibo/articles/339060.htmlhttp://www.aygfsteel.com/keweibo/comments/339060.htmlhttp://www.aygfsteel.com/keweibo/articles/339060.html#Feedback0http://www.aygfsteel.com/keweibo/comments/commentRss/339060.htmlhttp://www.aygfsteel.com/keweibo/services/trackbacks/339060.html 1. SAX ( Simple Application interface for XML ), 是一l程序设计接口,采用 observer 模式Q将XML文g视ؓ一个文字流的数据,在读取XML 元素时触发一pd的事?br />
2. 使用DOM 时是xml 文g解析Z个树状结构,q对树中的节点进行操?br /> 使用SAX 加蝲XML文gӞ他的操作像打开一?#8220;序的文件字W流”Q在dXML元素的开始标讎ͼl尾标记和内Ҏ记时生一pd的事?br /> 如一个简单的XML文gQ?lt;hello><message>hello XML!</message></hello>
会相应的触发QstartDocument, startElement, characters, endElement, endDocument, 只需~写q些事g处理E序可以解析XML文g?br />
3. SAX 可以高效的用内存,因ؓSAX 只是序的读取XML 文g的内容,q不会将XML 文g完全加蝲Q这样就比DOM 的处理效率高
但SAX 只能dXML 文g的内容,而不能更改XML 的内容,也不能随问XML 元素

4. 在SAX 中有4个处理器是要实现的:ContentHandlerQDTDHandlerQEntityResolverQErrorHandlerQ以处理不同的事Ӟq是比较ȝ的,
q好SAX 定义了一?DefaultHandler cLq几个实CQ我们只需?DefaultHandler中定义事件处理方法,然后注册到XMLReaderQ而SAXParser装了XMLReader的实现类Q?br /> SAXParser又是由SAXParserFactory提供的,所以我们实际用到的cd有:SAXParserFactoryQSAXParserQDefaultHandler

5. SAX 的解析步骤:
Q?Q写一个类l承 DefaultHandler, 实现自己的事件处理方?br /> Q?Q在ȝ序中建立 SAXParserFactory
Q?Q可以设|这个factory 的参?br /> Q?Q从q个factory 得到SAXParser
Q?Q解析XML文g

例子Q?br />
XML 文gQhr.xml
<?xml version="1.0" encoding="GB2312" ?>
<!-- 个h履历?->
<resume>
<person id="01">
<name>张三</name>
<birthday>03/24/1975</birthday>
<phone>1111-1111</phone>
<address>大连</address>
</person>
<person id="02">
<name>李四</name>
<birthday>9/26/1978</birthday>
<phone>2222-2222</phone>
<address>南京</address>
</person>
<person id="03">
<name>王五</name>
<birthday>11/09/1979</birthday>
<phone>3333-3333</phone>
<address>武汉</address>
</person>
</resume>


import javax.xml.parsers.*;
import org.xml.sax.*;
import org.xml.sax.helpers.*;

public class MySaxParser extends DefaultHandler {
public static void main( String[] args ){
try{
// 创徏一个handler
DefaultHandler dh = new MySaxParser();
// 创徏SAXParserFactory
SAXParserFactory spf = SAXParserFactory.newInstance();
// 从factory 中得到SAXParser
SAXParser sp = spf.newSAXParser();
// 用自定义的handler 解析xml
sp.parse( "08_02.xml", dh );
}catch( Exception e ){
e.printStackTrace();
}
}
public void startDocument(){

}
/**
* 当开始一个元素时打印出元素名和此元素的所有属?br /> */
public void startElement(String uri,
String localName,
String qName,
Attributes attributes)
{
System.out.print( qName + ":" );
int len = 0;
len = attributes.getLength();
if( len > 0 ){
System.out.print( "\t" + "attributes: " );
for( int i=0; i<len; i++ )
System.out.print( attributes.getQName(i) + "=" + attributes.getValue(i) + "\t" );
//System.out.println();
}
}
/**
* 打印出元素内?br /> */
public void characters(char[] ch,
int start,
int length)
{
String s = String.valueOf( ch, start, length );
System.out.print( s );
}
public void endElement(String uri,
String localName,
String qName)
{

}
public void endDocument(){

}
}


KE 2010-11-25 20:47 发表评论
]]>
XML schema ?elementFormDefaulthttp://www.aygfsteel.com/keweibo/articles/159688.htmlKEKESun, 11 Nov 2007 03:30:00 GMThttp://www.aygfsteel.com/keweibo/articles/159688.htmlhttp://www.aygfsteel.com/keweibo/comments/159688.htmlhttp://www.aygfsteel.com/keweibo/articles/159688.html#Feedback0http://www.aygfsteel.com/keweibo/comments/commentRss/159688.htmlhttp://www.aygfsteel.com/keweibo/services/trackbacks/159688.html 一个schema中声明的元素或者类型只能归C个命名空间中的某一个去Q这两个是,无名命名I间和由targetSchema属性指明的目标命名I间? 而targetSchema属性只能在xsQschema的定义中声明Q因而,一个schema中的定义的元素或cd只可能归属于一个有名命名空_但是 q有可能归属于无名命名空_?/p>

当elementFormDefault="qualified" Ӟ所有全局元素的子元素被以缺省方式放到目标命名空_但是全局元素或者类型将? 攑ֈ目标命名I间Q而当elementFormDefault="unqualified" Ӟ所有全局元素的子元素被以缺省方式放到无名命名空间? 而属性的命名I间cM地由attributeFormDefault="Q?来指明?/p>

需要明白的是,elementFormDefault="Q? 是有作用域的Qƈ且是被承的Q除非在子定义中覆盖父定义?/p>

下面三个例子说明了elementFormDefault的用效果。红色表C属于已命名I间的元素,蓝色表示属于未命名空间的元素?/p>

1.定义了目标命名空_ 全局elementFormDefault=“unqualified”。这旉了全局元素或者类型将归于目标命名I间外,局部元素将归于无名命名I间?/p>

unqualified.xsd

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs=" targetNamespace="aaaa" elementFormDefault="unqualified" attributeFormDefault="unqualified">
 <xs:element name="c">
  <xs:complexType>
   <xs:sequence>
    <xs:element name="c1" type="xs:double"/>
    <xs:element name="c2" type="xs:string"/>
   </xs:sequence>
  </xs:complexType>
 </xs:element>
</xs:schema>

unqualified.xml

<?xml version="1.0" encoding="UTF-8"?>
<n:c xmlns:n="aaaa" xmlns:xsi="
 <c1>3.141593E0</c1>
 <c2>String</c2>
</n:c>

2. 定义了目标命名空_ 全局elementFormDefault=“qualified”。这时全局元素或者类型将归于目标命名I间Q局部元素将以缺省方式归于目标命名空间?/p>

qualified.xsd

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="
 targetNamespace="aaaa" elementFormDefault="qualified" attributeFormDefault="unqualified">
 <xs:element name="c">
  <xs:complexType>
   <xs:sequence>
    <xs:element name="c1" type="xs:double"/>
    <xs:element name="c2" type="xs:string"/>
   </xs:sequence>
  </xs:complexType>
 </xs:element>
</xs:schema>

qualified.xml

<?xml version="1.0" encoding="UTF-8"?>
<c xmlns="aaaa" xmlns:xsi="
 <c1>3.141593E0</c1>
 <c2>String</c2>
</c>

3. 定义了目标命名空_ 全局elementFormDefault=“unqualified”。这时全局元素QcQ或者类型将归于目标命名I间? 局部元素(c1Qc2Q以~省方式归于无名命名I间。局部元素(c3Q在局部定义中使用form=“qualified”覆盖全局讑֮? unqualifiedQ这使得c3归于目标命名I间Q如果它有子元素Q子元素以~省方式归于目标命名I间Q?/p>

qualified2.xsd

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="
 targetNamespace="aaaa" elementFormDefault="unqualified" attributeFormDefault="unqualified">
 <xs:element name="c">
  <xs:complexType>
   <xs:sequence>
    <xs:element name="c1" type="xs:double"/>
    <xs:element name="c2" type="xs:string"/>
    <xs:element name="c3" type="xs:integer" form="qualified"/>
   </xs:sequence>
  </xs:complexType>
 </xs:element>
</xs:schema>


qualified2.xml

<?xml version="1.0" encoding="UTF-8"?>
<n:c xmlns:n="aaaa" xmlns:xsi="
 <c1>3.141593E0</c1>
 <c2>String</c2>
 <n:c3>0</n:c3>
</n:c>

?: http://bbs.xml.org.cn/dispbbs.asp?boardID=23&ID=25672



KE 2007-11-11 11:30 发表评论
]]>
XML解析?/title><link>http://www.aygfsteel.com/keweibo/articles/149603.html</link><dc:creator>KE</dc:creator><author>KE</author><pubDate>Sat, 29 Sep 2007 08:27:00 GMT</pubDate><guid>http://www.aygfsteel.com/keweibo/articles/149603.html</guid><wfw:comment>http://www.aygfsteel.com/keweibo/comments/149603.html</wfw:comment><comments>http://www.aygfsteel.com/keweibo/articles/149603.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/keweibo/comments/commentRss/149603.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/keweibo/services/trackbacks/149603.html</trackback:ping><description><![CDATA[<span style="color: red;">出处:http://www.webjx.com/htmldata/2007-06-30/1183208042.html<br /> </span> <p><strong>如需d、更新、创建或者操作某个XML文档Q则需要XML解析器?/strong></p> <p>实例</p> <p><strong>解析XML文g - 跨浏览器的实?/strong> </p> <p>本例是一个跨览器的实例Q把某个XML文档("note.xml")载入XML解析器?</p> <p class="code"><html><br /> <body><br /> <script type="text/vbscript"><br /> set xmlDoc=CreateObject("Microsoft.XMLDOM")<br /> xmlDoc.async="false"<br /> xmlDoc.load("/example/xmle/xmle_xml_note.xml")<br /> document.write("<h1>Traversing the XML nodes</h1>")<br /> for each x in xmlDoc.documentElement.childNodes<br /> document.write("<b>" & x.nodename & "</b>")<br /> document.write(": ")<br /> document.write(x.text)<br /> document.write("<br><br>")<br /> next<br /> </script><br /> </body><br /> </html></p> <p><strong>解析XML字符?- 跨浏览器的实?/strong> </p> <p>本例是一个跨览器的实例Q展C如何蝲入ƈ解析某个XML字符丌Ӏ?</p> <p class="code"><html><br /> <body><br /> <script type="text/javascript"><br /> var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")<br /> xmlDoc.async="false"<br /> xmlDoc.load("/example/xmle/xmle_xml_note.xml")<br /> document.write<br /> ("The first XML element in the file contains: ")<br /> document.write<br /> (xmlDoc.documentElement.childNodes.item(0).text)<br /> </script><br /> </body><br /> </html></p> <p><strong>解析一个XML文档</strong></p> <p>如需操作某个XML文档Q您需要XML解析器。解析器会将文档载入电脑的内存中。一旦文档被载入Q可使用DOM对其数据q行操作。DOM把XML作ؓ一颗树来处理?/p> <p>微Y的XML解析器与Mozilla览器中使用的解析器是有差异的。在本教E中Q我们会为您展示如何创徏可工作于IE和Mozilla览器中的跨览器脚本?/p> <p><strong>微Y的XML解析?/strong></p> <p>微Y的XML解析器是存在于IE 5.0或更高版本中的COMlg。一旦你安装了IEQ就可用脚本来利用解析器了?/p> <p>微Y的XML解析器支持所有必要的功能Q来遍历节点树,讉K节点以及它们的属性|插入q删除节点,q将节点数{换回XML?/p> <p>如需创徏微YXML解析器的一个实例,请用下面的代码Q?/p> <p class="code">JavaScript:<br /> var xmlDoc=new ActiveXObject("Microsoft.XMLDOM");<br /> VBScript:<br /> set xmlDoc=CreateObject("Microsoft.XMLDOM")<br /> ASP:<br /> set xmlDoc=Server.CreateObject("Microsoft.XMLDOM")</p> <p>下面的代码段可向微Y的XML解析器蝲入一个已有的XML文档("note.xml")Q?/p> <p class="code">var xmlDoc=new ActiveXObject("Microsoft.XMLDOM");<br /> xmlDoc.async="false";<br /> xmlDoc.load("note.xml");</p> <p>上面的脚本的W一行创ZXML解析器的一个实例。第二行关闭了同步蝲入,q样可以保在文档被完全载入前解析器不会l箋执行。第三行会告知解析器载入名ؓ"note.xml"的XML的文档?/p> <p><strong>Mozilla、Firefox以及Opera中的XML解析?/strong></p> <p>Mozilla览器的XML解析器支持所有必要的功能Q来遍历节点树,讉K节点以及它们的属性|插入q删除节点,q将节点树{换回XML?/p> <p>如需创徏Mozilla览器的XML解析器的一个实例,请用下面的代码Q?/p> <p class="code">JavaScript:<br /> var xmlDoc=document.implementation.createDocument("ns","root",null);</p> <p>W一个参敎ͼnsQ定义用于XML文档的命名空_namespaceQ。第二个参数QrootQ是XML文g中的XML根元素。第三个参数QnullQ一般LnullQ这是由于目前还没有用到q个参数?/p> <p>下面的代码段可向Mozilla览器的XML解析器蝲入一个已有的XML文档("note.xml")Q?/p> <p class="code">var xmlDoc=document.implementation.createDocument("","",null);<br /> xmlDoc.load("note.xml");</p> <p>上面的脚本的W一行创ZXML解析器的一个实例。第二行会告知解析器载入名ؓ"note.xml"的XML的文档?/p> <p><strong>解析某个XML文g - 跨浏览器的实?/strong></p> <p>下面的例子是一个跨览器的实例Q向XML解析器蝲入了某个已有的XML文档("note.xml")Q?/p> <p class="code"><html><br /> <head><br /> <script type="text/javascript"><br /> var xmlDoc;<br /> function loadXML()<br /> {<br /> // 用于 IE 的代码:<br /> if (window.ActiveXObject)<br />   {<br />   xmlDoc=new ActiveXObject("Microsoft.XMLDOM");<br />   xmlDoc.async=false;<br />   xmlDoc.load("note.xml");<br />   getmessage();<br />   }<br /> // 用于 Mozilla, Firefox, Opera, {浏览器的代码:<br /> else if (document.implementation &&<br /> document.implementation.createDocument)<br />   {<br />   xmlDoc=document.implementation.createDocument("","",null);<br />   xmlDoc.load("note.xml");<br />   xmlDoc.onload=getmessage;<br />   }<br /> else<br />   {<br />   alert('Your browser cannot handle this script');<br />   }<br /> }<br /> function getmessage()<br /> {<br /> document.getElementById("to").innerHTML=<br /> xmlDoc.getElementsByTagName("to")[0].childNodes[0].nodeValue;<br /> document.getElementById("from").innerHTML=<br /> xmlDoc.getElementsByTagName("from")[0].childNodes[0].nodeValue;<br /> document.getElementById("message").innerHTML=<br /> xmlDoc.getElementsByTagName("body")[0].childNodes[0].nodeValue;<br /> }<br /> </script><br /> </head><br /> <body onload="loadXML()"><br /> <h1>W3Schools Internal Note</h1><br /> <p><b>To:</b> <span id="to"></span><br /><br /> <b>From:</b> <span id="from"></span><br /><br /> <b>Message:</b> <span id="message"></span><br /> </p><br /> </body><br /> </html></p> <p>输出Q?/p> <p class="code">W3Schools Internal Note<br /> To: Tove<br /> From: Jani<br /> Message: Don't forget me this weekend!</p> <p><strong>重要的注?/strong></p> <p>如需从某个XML元素Q比?lt;from>Jani</from>Q中提取文本Q比如JaniQ,请用下面的语法Q?/p> <p class="code">getElementsByTagName("from")[0].childNodes[0].nodeValue</p> <p>重要事项QgetElementsByTagName会返回一个节Ҏl。此数组含有XML文档中拥有指定名U的所有元素。在q例子中Q只有一?from"元素Q但是仍焉要设定数l的下标( [0] )?/p> <p><strong>解析一个XML字符?- 跨浏览器的实?/strong></p> <p>下面的代码是一个跨览器的实例Q向我们展示了如何加载和解析某个XML字符Ԍ</p> <p class="code"><html><br /> <body><br /> <script type="text/javascript"><br /> var text="<note>";<br /> text=text+"<to>Tove</to>";<br /> text=text+"<from>Jani</from>";<br /> text=text+"<heading>Reminder</heading>";<br /> text=text+"<body>Don't forget me this weekend!</body>";<br /> text=text+"</note>";<br /> // 用于 IE 的代码:<br /> if (window.ActiveXObject)<br />   {<br />   var doc=new ActiveXObject("Microsoft.XMLDOM");<br />   doc.async="false";<br />   doc.loadXML(text);<br />   }<br /> // 用于 Mozilla, Firefox, Opera, {浏览器的代码:<br /> else<br />   {<br />   var parser=new DOMParser();<br />   var doc=parser.parseFromString(text,"text/xml");<br />   }<br /> // documentElement 提交根元素:<br /> var x=doc.documentElement;<br /> document.write("Text of first child element: ");<br /> document.write(x.childNodes[0].childNodes[0].nodeValue);<br /> document.write("<br />");<br /> document.write("Text of second child element: ");<br /> document.write(x.childNodes[1].childNodes[0].nodeValue);<br /> </script><br /> </body><br /> </html></p> <p>输出Q?/p> <p class="code">Text of first child element: Tove<br /> Text of second child element: Jani</p> <p>注释QInternet Explorer使用loadXML()Ҏ解析XML字符Ԍ而Mozilla览器用DOMParser对象?/p> <br /> <img src ="http://www.aygfsteel.com/keweibo/aggbug/149603.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/keweibo/" target="_blank">KE</a> 2007-09-29 16:27 <a href="http://www.aygfsteel.com/keweibo/articles/149603.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> վ֩ģ壺 <a href="http://" target="_blank">ԭ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ٹ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ᶼ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">«</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ʡ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ϫ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">¬</a>| <a href="http://" target="_blank">ʡ</a>| <a href="http://" target="_blank">̨</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">μԴ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ˮ</a>| <a href="http://" target="_blank">Ľ</a>| <a href="http://" target="_blank">ɳ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">̨</a>| <a href="http://" target="_blank">ؼ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ѯ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ǭ</a>| <a href="http://" target="_blank">Դ</a>| <a href="http://" target="_blank">̨</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">˳</a>| <a href="http://" target="_blank"></a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>