<statement id="1">sdfsd1</statement>
<statement id="2">sdfsd2</statement>
<statement id="3">sdfsd3</statement>  我现在有一个这样的XML,用户可以通过指定的ID编号获得指定的值,目前解析的方式是W3C,请老鸟帮帮忙,谢谢。

解决方案 »

  1.   

    dom4j,gooogle一堆代码............
      

  2.   

    for example
    Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(Class.class.getResourceAsStream("xxx.xml")); //这里假设你拿到了一个Document对象
            //NodeList nl = doc.getChildNodes(); //不知道你的xml文件结构
            NodeList nl = doc.getElementsByTagName("statement"); //这里通过tag名获得子节点
            for (int i=0; i<nl.getLength(); i++) { //遍历子节点
                Node n = nl.item(i);
                if (n instanceof Element) {
                    Element e = (Element)n;
                    //System.out.printf("id=%s, content=%s\n", 
                    //    e.getAttribute("id"), n.getTextContent());
                    if (your_id.equals(e.getAttribute("id"))) { //找到id一致的节点
                        System.out.println(n.getTextContent()); //打印节点内容
                    }
                }
            }
      

  3.   

    楼主可以使用DOM4J功能强大而且简单
    上次回答问题的小例子<category name="sms.dlut" additivity="false">
    <priority value="debug" />
    <appender-ref ref="DEBUG_LOG" />
    </category>
    public class Dom4jTest {
    public static void main(String[] args) throws Exception {
    SAXReader reader = new SAXReader();
    Document document = reader.read(new File("D:\\WorkSpace6.5\\CSDNTest\\src\\test.xml"));
    Element root = document.getRootElement(); Element priority = root.element("priority");
    System.out.println(priority.attributeValue("value"));

    Element appenderref = root.element("appender-ref");
    System.out.println(appenderref.attributeValue("ref"));
    }
    }