如何在xml dom解析器中获取节点列表的值?

时间:2012-08-25 05:12:16

标签: android xml xml-parsing xmlnodelist

我有一个看起来像这样的XML ::

<Channels>
       <Channel Id="511" Title="Test" ChannelDescription="This is Test Channel./>
</Channels>

我成功解析了这种XML。我的问题是当我解雇了webservice并且如果没有来自服务器的身份验证那么webservice响应就像这样::

<AuthenticationError>An Active Session Already Exists For This User.</AuthenticationError>

那么如何检查根节点是“Authentication Error”还是“Notes”。如果我得到Authentication Error标签,那我怎么能得到它的节点值“这个用户已经存在一个活动会话。”??

XML解析代码是这个::

NodeList node =null;
node= (NodeList)result.getElementsByTagName("Channels");


for(int j=0;j<node.getLength();j++)
{                             
Node aNode=node.item(j);  
Element fstElmnt = (Element) aNode;

NodeList websiteList = fstElmnt.getElementsByTagName("Channel");
int check=websiteList.getLength();

for(int k=0;k<check;k++)
{
    DatabaseConstant myChannels = new DatabaseConstant();
    Node checkNode=websiteList.item(k);

    Element websiteElement = (Element) checkNode;                                                                               
    myChannels.id=websiteElement.getAttribute("Id");
    myChannels.title=websiteElement.getAttribute("Title");

    channel .add(myChannels);
    }
}
}

我希望我的问题很清楚......请尽快提供解决方案。在此先感谢....

1 个答案:

答案 0 :(得分:2)

使用getDocumentElement()获取root Element,然后使用getTagName()获取标记名称。

示例:

    Element root = result.getDocumentElement();
    String name = root.getTagName();

    if(name.equalsIgnoreCase("AuthenticationError") )
    {
        String value = myDocument.getDocumentElement().getTextContent();
        System.out.println("Error:" + value);
    }
    else if(name.equalsIgnoreCase("Notes") )
    {
       NodeList nodes = root.getElementsByTagName("Channels");

       for(int i = 0 ; i < nodes.getLength() ; i ++)
       {
           //-----do something with channels nodes--
       }
    }