thanks,to  lengshuangzi(冷霜子),
取出每一对r的信息.to yoken(雨泉) ,
xpath怎么做,能写一下代码么?

解决方案 »

  1.   

    <sample>
    <r>
        <xx>ddd</xx>
    </r>
    <c>
        <p name="5">erw</>
    </c>
    <r>trter
        <aa>
            <r>ff</r>
        </aa>
    </r>
    </sample>取ddd : sample/r/xx/text()
    取erw : sample/c/p/text()
    取trter : sample/r/text()
    取ff : sample/r/aa/r/text()
      

  2.   

    to yoken(雨泉) ,
    你这是不行的,你不能动态获取。
      

  3.   

    以 <r> 和 </r> 为一对,如果有嵌套就用压栈来实现吧.
      

  4.   

    to yoken(雨泉) 说的是dom
      

  5.   

    多谢,
    to topsonstar(星),
    能不能详细一点,不太明白。
      

  6.   

    package com.test.csdn.xml;public class TestParseXml
    {
        private static String tag;
        class MyHandler
            extends org.xml.sax.helpers.DefaultHandler
        {
            private String part = null;
            public void startElement(String uri, String localName, String qName,
                                     org.xml.sax.Attributes attributes)
            {
                if (qName.equals(tag))
                {
                    part = "<" + tag + ">";
    //                part="";
                }
                else if (part != null)
                {
                    part += "<" + qName + ">";
                }
            }
            public void endElement(String uri, String localName, String qName)
            {
                if (qName.equals(tag))
                {
                    part += "</" + tag + ">";
                    System.out.println(part);
                }
                else
                {
                    part += "</" + qName + ">";
                }
            }
            public void characters(char[] ch, int start, int length)
            {
                part += new String(ch, start, length);
            }
        }
        public static void setFilterTag(String tag)
        {
            TestParseXml.tag = tag;
        }    public static java.io.InputStream getXmlStream()
        {
            String xml = "<root><r><xx>ddd</xx></r><c><p name=\"5\">erw</p></c><r>trter</r><aa><r>ff</r></aa></root>";
            setFilterTag("r");
            return new java.io.ByteArrayInputStream(xml.getBytes());
        }
        public static void main(String[] args) throws Exception
        {
            javax.xml.parsers.SAXParserFactory saxParserFtr =
                javax.xml.parsers.SAXParserFactory.newInstance();
            javax.xml.parsers.SAXParser parser = saxParserFtr.newSAXParser();
            java.io.InputStream is = getXmlStream();
            parser.parse(new org.xml.sax.InputSource(is),
                         new TestParseXml().new MyHandler());
        }
    }
      

  7.   

    详细说明见:
    http://expert.csdn.net/Expert/topic/1987/1987765.xml?temp=.9690363
      

  8.   

    package com.test.csdn.xml;public class TestParseXml
    {
        private static String tag;
        class MyHandler
            extends org.xml.sax.helpers.DefaultHandler
        {
            private String part = null;
            private String getAttr(org.xml.sax.Attributes t)
            {
                String s="";
                for(int i=0;i<t.getLength();i++)
                {
                    s=s+" " +t.getQName(i) +"=\""+ t.getValue(i)+"\"";
                }
                return s;
            }        public void startElement(String uri, String localName, String qName,
                                     org.xml.sax.Attributes attributes)
            {
                if (qName.equals(tag))
                {
                    part = "<" + tag + getAttr(attributes)+ ">";
    //                part="";
                }
                else if (part != null)
                {
                    part += "<" + qName + getAttr(attributes) + ">";
                }
            }
            public void endElement(String uri, String localName, String qName)
            {
                if (qName.equals(tag))
                {
                    part += "</" + tag + ">";
                    System.out.println(part);
                }
                else
                {
                    part += "</" + qName + ">";
                }
            }
            public void characters(char[] ch, int start, int length)
            {
                part += new String(ch, start, length);
            }
        }
        public static void setFilterTag(String tag)
        {
            TestParseXml.tag = tag;
        }    public static java.io.InputStream getXmlStream()
        {
            String xml = "<root><r><xx test=\"hello!\">ddd</xx></r><c><p name=\"5\">erw</p></c><r>trter</r><aa><r>ff</r></aa></root>";
            setFilterTag("r");
            return new java.io.ByteArrayInputStream(xml.getBytes());
        }
        public static void main(String[] args) throws Exception
        {
            javax.xml.parsers.SAXParserFactory saxParserFtr =
                javax.xml.parsers.SAXParserFactory.newInstance();
            javax.xml.parsers.SAXParser parser = saxParserFtr.newSAXParser();
            java.io.InputStream is = getXmlStream();
            parser.parse(new org.xml.sax.InputSource(is),
                         new TestParseXml().new MyHandler());
        }
    }