1

次のxmlファイルを解析したい:

<login>
    <address id="1">
        <username>mahesh</username>
        <password>1234</password>
    </address>

    <address id="2">
        <username>admin</username>
        <password>admin</password>
    </address>  

    <address id="3">
        <username>a</username>
        <password>a</password>
    </address>  
</login>

誰でも私を助けることができますか?SAX パーサーを使用して解析するためのサンプル コードを教えてください。このファイルを httpConnection メソッドから取得したい。BB開発初心者です。

4

1 に答える 1

2

XML解析にDom&Saxパーサーを使用できます。

HTTPリクエストからXmlを呼び出すためのコードスニペットがあり、Saxパーサーを使用して解析します。

SAXParserImpl saxparser = new SAXParserImpl();
ListParser receivedListHandler=new  ListParser();
static DataInputStream din = null;
public static String response;


    HttpConnection hc = null;
        OutputStream os;
           try
           {  
               final String url ="<Enter URL for Xml Http Address>"+ InitClass.getConnectionString()+";ConnectionTimeout=25000";


               hc = (HttpConnection)Connector.open(url);

               os = hc.openOutputStream();
               os.write(postDataBytes);

               if (hc.getResponseCode() == 200)
                    din = hc.openDataInputStream();
                else
                    response = "" + hc.getResponseCode();
                saxparser.parse(din, receivedListHandler);
           }
           catch (Exception e) 
           {

           }
           finally 
           {
              try 
              {
                  if(din!=null)
                      din.close();
                  din = null;
                  if(hc!=null)
                      hc.close();
                  hc = null;
              }
              catch (Exception e) {   }
           }

/ *パーサークラス* /

 public class ListParser extends DefaultHandler 
{
private String Key="";
private  Hashtable ht=new Hashtable();
vector vec = new Vector();
public ListParser()
{

}
/**
* Gets called, whenever a Xml is start .
*/
public void startDocument() throws SAXException 
{

} 
/**
* Gets called, whenever a Xml is End .
*/
public void endDocument() throws SAXException 
{ 


} 
/**
* Gets called, whenever a new tag is found.
*/
public void startElement(String uri, String localName, String name, Attributes attributes) throws SAXException 
{
    if(name.equals("address"))
    {
        ht = null;
        ht = new Hashtable();
    }
    else if(name.equals("login"))
    {

    }
    Key=name;
}

/**
* Gets called, whenever a closed tag is found.
*/
public void endElement(String uri, String localName, String name) throws SAXException
{
    if(name.equals("address"))
    {
        vec.addElement(ht);
    }
}
public void characters(char[] ch, int start, int length) throws SAXException 
{
    String element=new String(ch, start, length);
    ht.put(Key, element);
}
}

XMLを解析し、XMLタグごとにハッシュテーブルのベクトルvecでデータを提供します。

于 2012-08-11T12:23:14.043 に答える