SAX解析xml的几种方法参数的意思,

如题,说的详细点,我想问的是
void startDocument()
void endDocument()
void startElement(String uri, String localName, String qName, Attributes atts)
void endElement(String uri, String localName, String qName)
void characters(char[ ] ch, int start, int length)这些方法的过程,参数的意义.方法的意义.尽量不要粘贴.最好能举个简单的XML解析例子.看懂了再加50分.
没人回答.我是问错了还是?就是这5个方法的意义,5个方法中的参数分别在具体的例子中应该怎么用

命名空间标识符NamespaceIdentifier

命名空间与java中包机制类似,用来避免在同一文件中包含相同名称但结构不同的元素时可能出现的冲突。命名空间标识符可以使用URL以及其他方式,本例中对应的标识符是http://www.jd.com  http://www.dangdang.com

命名空间前缀Prefix

前缀就是命名空间的快捷引用方式,它也称作命名空间的别名(alias)。

本例中对应的是 jd

不带前缀和命名空间的本地名称LocalName (Part)

本例中是booktitle author。

带有别名前缀的限定名QualifiedName (qName)

由别名前缀,冒号以及元素名称组成,这些名称很清晰,可被解析器解析和验证。

本例中是jd:book  jd:title

默认命名空间
就是省去前缀的命名空间,这样在后续的书写时就不用带上前缀了。例如本例中的

<book xmlns="http://www.dangdang.com">
<title>Learning XML</title>
<author>Erik T. Ray</author>
</book> 
使用的就是默认命名空间。

2.java SAX解析xml参数问题

这里尤其以方法,public void startElement(String uri, String localName, String qName, Attributes attributes) 为例.

uri- 代表命名空间的标识符,当元素没有命名空间或者解析器的命名空间支持特性没有打开时是空串。注意,可以使用SAXParserFactory的public void setNamespaceAware(boolean awareness)打开支持命名空间特性。

localName - 代表没有前缀的本地名,当支持命名空间特性没有打开时是空串。
qName - 代表带有前缀的限定名,当限定名不能获取时是空串。

attributes - 与元素相关的属性,如果没有属性,那么就是空的属性对象。

下面给出解析上面带有命名空间的xml文档的实例代码,通过观察结果,更好的理解上述参数。

代码清单:SAXTest.java

[html] view plaincopy

    package com.learningjava;  

    import java.io.File;  

    import java.util.ArrayList;  

    import javax.xml.parsers.SAXParser;  

    import javax.xml.parsers.SAXParserFactory;  

    import org.xml.sax.Attributes;  

    import org.xml.sax.SAXException;  

    import org.xml.sax.helpers.DefaultHandler;  

    /**  

    * This program illustrate using SAX to parser xml  

    * @author wangdq  

    * 2011-11-7  

    */  

    public class SAXTest {  

    public static void main(String[] args) throws Exception {  

    //step1 : get a parser  

    SAXParserFactory factory = SAXParserFactory.newInstance();  

    factory.setNamespaceAware(true);//performe Namespace processing  

    SAXParser parser = factory.newSAXParser();  

    //step2: create a handler  

    DefaultHandler handler = new DefaultHandler(){  

    @Override   

    public void startElement (String uri, String localName,  

    String qName, Attributes attributes) throws SAXException  

    {       

    System.out.format("uri: %-25s\tlocalname: %-10s\tqname: %-10s%n",uri,localName,qName);  

    if(localName.equals("title")) {  

    title = true;  

    }  

    }  

    @Override   

    public void endElement(String namespaceURI, String localName, String qName)   

    throws SAXException {   

    // End of processing current element   

    if (title) {   

    title = false;   

    }   

    }   

    @Override   

    public void characters(char[] ch, int start, int length) {   

    // Processing character data inside an element   

    if (title) {   

    String bookTitle = new String(ch, start, length);   

    bookList.add(bookTitle);   

    }   

    }  

    @Override  

    public void endDocument ()throws SAXException{  

    System.out.println("we have books: "+bookList);  

    }  

    ArrayList<String> bookList = new ArrayList<>();  

    private boolean title =false;  

    };  

    //step3 attach a handler and begin Parsing the xml  

    parser.parse(new File("NameSpaceDemo.xml"), handler);  

    }  

    }  




    运行结果

    uri:                                              localname: books         qname: books     
    uri: http://www.jd.com                  localname: book           qname: jd:book   
    uri: http://www.jd.com                  localname: title             qname: jd:title  
    uri: http://www.jd.com                  localname: author         qname: jd:author
    uri: http://www.dangdang.com      localname: book           qname: book      
    uri: http://www.dangdang.com      localname: title             qname: title     
    uri: http://www.dangdang.com      localname: author         qname: author    
    we have books: [Harry Potter, Learning XML]

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-03-06
没看懂……本回答被提问者采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网