<?xml version="1.0" encoding="utf-8"?><ConA id="container" >
<ConA id="ca_idnum" name="coa" >
<Text id="t_idnum"></Text>
<Edit id="e_idnum"></Edit>
</ConA> <ConB id="cb_sel">
<Select id="select"></Select>
<ConA id="subContainer" >
                       <Button id="submit"></Button>
</ConA>
</ConB> <ConC id="cb_sel">
<Button id="button"></Button>
</ConC></ConA>对于上面这样多层嵌套的xml文件该如何解析?我想解析这段代码,然后在控制台打印出每个节点的id,该怎么做,能否提供些参考代码?

解决方案 »

  1.   

    那你找id就可以了,每个标签就一个id
      

  2.   

    参考下这个
           InputStream in=this.getResources().getAssets().open("test.xml")
    public void CXmlTests(InputStream in)
    {
    LoadXmlTask loadTask=new LoadXmlTask();
    boolean result=true;
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    try 
    {
    DocumentBuilder builder = factory.newDocumentBuilder();
    Document dom = builder.parse(in);
    Element root = dom.getDocumentElement();
    NodeList items = root.getElementsByTagName("Layout");//查找所有person节点
    if(items==null) return;
    //取Layout节点
    Node LayoutNode = items.item(0);
    NamedNodeMap nMap=LayoutNode.getAttributes();//取Layout属性
    if(nMap!=null)
    {
    for(int j=0;j<nMap.getLength();j++)
       System.out.println(nMap.item(j).getNodeName()+" "+nMap.item(j).getNodeValue());
    }
    /*取Layout内所有节点*/
    NodeList nodeList=LayoutNode.getChildNodes();
    for(int j=0;j<nodeList.getLength();j++)
    {
    Node sNode=nodeList.item(j);
    //这里处理 ConA ConB ConC 节点
    System.out.println(sNode.getNodeName());
    }
    }
    catch(Exception e)
    {
    System.out.println(e.getMessage());
    }
    }   
      

  3.   

    利用android自带的xml pull解析
    判断是标签的开始,获取属性id的值.public static XmlPullParser getXmlPullParser(Context context,
    String fileName) throws XmlPullParserException, IOException {
    XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
    factory.setNamespaceAware(true);
    XmlPullParser parser = factory.newPullParser();
    parser.setInput(context.getAssets().open(fileName), "UTF-8");
    return parser;
    }
    -------------------------------XmlPullParser parser = BaseXMLParse.getXmlPullParser(is);
    int eventType = parser.getEventType();
    while (eventType != parser.END_DOCUMENT) {
    switch (eventType) {
    case XmlPullParser.START_TAG:
                            .......
                            break;
                            }
                     }
      

  4.   

    我之前使用了dom4j,同一个xml文件,在java项目中解析完全正常,但是代码移植到android中,在2.1的模拟器上运行就出问题了,看上去好像attribute属性不能正确读取
      

  5.   

    刚又实验了一下,在2.2的模拟器上运行完全没有问题,看来是dom4j在2.1上运行有问题,有解决办法没??
      

  6.   

    用dom时属性不能用中文 会异常,用SAX可以用中文属性