Please print the dependency tree of a XML document and  the level of each element in the XML. for examples:
 
<person id="0" name="james" title="manager">
    <person id="1" name="alex">
        <person id="2" name="flex">
            <person id="3" name="cathy"/>
        </person>
        <person id="4" name="john"/>   
    </person>
</person>
 
The result will be:
 
james(0)
`-- alex(1)
    |-- flex(2)
    |   `-- cathy(3)
    `-- john(2)
 
You can use the 3rd-party library (eg. libxml2 or java) . Graphics interface is preferred.

解决方案 »

  1.   

    帮你的xml加了个根节点,要不xml格式是不对的import java.io.StringReader;
    import java.util.List;import org.jdom.Document;
    import org.jdom.Element;
    import org.jdom.JDOMException;
    import org.jdom.input.SAXBuilder;
    public class ParseXml {
    public static int level = -1;
    public static void print(int num){
    for(int i=0;i<num;i++){
    System.out.print("  ");
    }
    }

    public static void parseElement(Element e,int level){
    print(level);
    System.out.println(e.getAttributeValue("name")+"("+e.getAttributeValue("id")+")");
    List<Element> list = e.getChildren("person");
    for(int i=0;i<list.size();i++){
    Element ee = list.get(i);
    parseElement(ee,level+1);
    }

    }

    // 通过Jdom来实现解析
    public static void parse(String xmlString) {
    SAXBuilder builder = new SAXBuilder();
    try {
    //创建xml文档对象
    Document doc = builder.build(new StringReader(xmlString));
    //根节点
    Element root = doc.getRootElement();
    List<Element> personList = root.getChildren("person");
    for(int i=0;i<personList.size();i++){
    Element e = personList.get(i);
    parseElement(e,level+1);
    }
    } catch (JDOMException e) {
    e.printStackTrace();
    }
    } public static void main(String[] args) {
    String xmlString = "<persons><person id='0' name='james' title='manager'>" +
    "<person id='1' name='alex'>" +
    "<person id='2' name='flex'>" +
    "<person id='3' name='cathy'/>" +
    "</person>" +
    "<person id='4' name='john'/>" +
    "</person>" +
       "</person></persons>" ;

    parse(xmlString);
    }
    }
      

  2.   

    LS 你最好提供一下jdom 的下载路径, 不然人家怎么用你的代码?看来 Dom4j解析起来会轻松一点
      

  3.   

    4楼回答得很好。完全可以做得更通用一点,个人比较推荐dom4j。
      

  4.   

    我晕,google下不是很多,加我Q我传你也行  7262662dom4j也可以,一样的,解析方式无所谓