1

次のようなXMLが1つあります::

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

私はこの種のXMLを正常に解析しています。私の問題は、Webサービスを起動したときに、サーバーからの認証がない場合、次のようなWebサービスの応答が発生することです。

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

では、ルートノードが「認証エラー」または「メモ」であることを確認するにはどうすればよいですか。また、認証エラータグを取得した場合、「このユーザーにはすでにアクティブなセッションが存在します」というノード値を取得するにはどうすればよいですか?

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);
    }
}
}

私の質問が明確であることを願っています...できるだけ早く解決策を提供してください。前もって感謝します....

4

1 に答える 1

2

getDocumentElement()ルートを取得するために使用し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--
       }
    }
于 2012-08-25T05:43:46.907 に答える