比如,xml的格式如下:
<xsd:schema targetNamespace="urn:hl7-org:v3" xmlns="urn:hl7-org:v3" xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xsd:complexType name="Text" mixed="true">
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element name="content" type="xsd:string"/>
<xsd:element name="linkHtml" type="xsd:string"/>
<xsd:element name="sub" type="xsd:string"/>
<xsd:element name="sup" type="xsd:string"/>
<xsd:element name="br" type="xsd:string"/>
<xsd:element name="footnote" type="xsd:string"/>
<xsd:element name="footnoteRef" type="xsd:string"/>
<xsd:element name="renderMultiMedia" type="xsd:string"/>
<xsd:element name="paragraph" type="xsd:string"/>
<xsd:element name="list" type="xsd:string"/>
<xsd:element name="table" type="xsd:string"/>
<xsd:element name="element2" type="Title"/>
</xsd:choice>
</xsd:complexType>
<xsd:complexType name="Title" mixed="true">
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element name="content" type="xsd:string"/>
<xsd:element name="sub" type="xsd:string"/>
<xsd:element name="sup" type="xsd:string"/>
<xsd:element name="br" type="xsd:string"/>
<xsd:element name="footnote" type="xsd:string"/>
<xsd:element name="footnoteRef" type="xsd:string"/>
</xsd:choice>
</xsd:complexType>
</xsd:schema>如何得到所有的〈xsd:complexType〉节点?

解决方案 »

  1.   

    import org.xml.sax.Attributes;
    import org.xml.sax.helpers.DefaultHandler;
    import org.xml.sax.SAXException; 
    import java.util.Properties;//使用DefaultHandler的好处 是 不必陈列出所有方法,
    public class ConfigParser extends DefaultHandler {////定义一个Properties 用来存放 dbhost dbuser dbpassword的值
    private Properties props;private String currentSet;
    private String currentName;
    private StringBuffer currentValue = new StringBuffer();//构建器初始化props
    public ConfigParser() {this.props = new Properties();
    }public Properties getProps() {
    return this.props;
    }//定义开始解析元素的方法. 这里是将<xxx>中的名称xxx提取出来.
    public void startElement(String uri, String localName, String qName, Attributes attributes) 
    throws SAXException {
    currentValue.delete(0, currentValue.length());
    this.currentName =qName;
    }//这里是将<xxx></xxx>之间的值加入到currentValuepublic void characters(char[] ch, int start, int length) throws SAXException { currentValue.append(ch, start, length);}//在遇到</xxx>结束后,将之前的名称和值一一对应保存在props中public void endElement(String uri, String localName, String qName) throws SAXException {props.put(qName.toLowerCase(), currentValue.toString().trim());
    }}
    看看这段程序对你有没有帮助!
      

  2.   

    谢谢,我已经解决了,通过nodename可以递归找到所有的节点。