up vote 3 down vote favorite
share [g+] share [fb]

i am editing my qestion to make clear idea about the string name resfile_name and result I want to do xml parsing.where i am passing some parameter to url ane it gives me responce in xml format which i take it in string name result now i want to parse that string(xml data). i am using the follwing below code:-

 SAXParserFactory factory = SAXParserFactory.newInstance();
        SAXParser saxParser = factory.newSAXParser();
        vector = new Vector();
        vector.addElement(new KeyPair("ParentID", "10000186"));
        String result = Constants.callSoap("GetChildList", vector);
        InputStream is = new ByteArrayInputStream(result.getBytes("UTF-8"));

Reader reader = new InputStreamReader(in); XmlParser parser = new XmlParser(reader); ParseEvent pe = null; Reader reader = new InputStreamReader(in); XmlParser parser = new XmlParser(reader); ParseEvent pe = null; parser.skip(); parser.read(Xml.START_TAG, null, "GetChildListResult"); parser.skip(); parser.read(Xml.START_TAG, null, "CustomChildList");

boolean trucking = true;
boolean first = true;
while (trucking) {
  pe = parser.read();
  if (pe.getType() == Xml.START_TAG) {
    String name = pe.getName();
      System.out.println("nAME=="+name);
    if (name.equals("ChildID")) {
      String title, link, description;
      title = link = description = null;
      while ((pe.getType() != Xml.END_TAG) ||
          (pe.getName().equals(name) == false)) {
        pe = parser.read();
        if (pe.getType() == Xml.START_TAG &&
            pe.getName().equals("ChildName")) {
          pe = parser.read();
          title = pe.getText();
        }
        else if (pe.getType() == Xml.START_TAG &&
            pe.getName().equals("IMEINumber")) {
          pe = parser.read();
          link = pe.getText();
        }
        else if (pe.getType() == Xml.START_TAG &&
            pe.getName().equals("ChildStatus")) {
          pe = parser.read();
          description = pe.getText();
        }
      }

    }
    else {
      while ((pe.getType() != Xml.END_TAG) ||
          (pe.getName().equals(name) == false))
        pe = parser.read();
    }
  }
  if (pe.getType() == Xml.END_TAG &&
        pe.getName().equals("GetChildListResult"))
    trucking = false;
}

the Constants.callSoap("GetChildList", vector); calls the callsoap method in constants which has code:--

public static String callSoap(String method, Vector vector) { String result = null; Constants.log("callSoap"); try { SoapObject request = new SoapObject(NAMESPACE, method); if (vector != null) { for (int i = 0; i < vector.size(); i++) { KeyPair keyPair = (KeyPair) vector.elementAt(i); request.addProperty(keyPair.getKey(), keyPair.getValue()); } } Constants.log("callSoap2"); Element[] header = new Element[1]; header[0] = new Element().createElement(NAMESPACE, "AuthSoapHd"); Element username = new Element().createElement(NAMESPACE, "strUserName"); username.addChild(Node.TEXT, ""); header[0].addChild(Node.ELEMENT, username); Element password = new Element().createElement(NAMESPACE, "strPassword"); password.addChild(Node.TEXT, "*"); header[0].addChild(Node.ELEMENT, password); SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); envelope.dotNet = true; envelope.headerOut = header; envelope.setOutputSoapObject(request); Constants.log("callSoap3");
HttpTransport transport = new HttpTransport("http://...**/ChildTrackerService/ChildTrackerService.asmx?wsdl"); //log("Log:transport"); transport.setXmlVersionTag(""); //log("Log:transport1"); try { transport.call("http://tempuri.org/" + method, envelope); //log("Log:transport:call");
result = (envelope.getResponse()).toString();

        } catch (Exception e) {
            System.out.println("exception of IP==" + e);
        }
    } catch (Exception e) {
        log("Exception CallSoap:" + e.toString());
    }
    return result;
}

And the class keypair contain:-

public KeyPair(String key, String value) { this.key = key; this.value = value; }

public String getKey() {
    return key;
}

public String getValue() {
    return value;
}

The string reult has -- result==anyType{CustomChildList=anyType{ChildID=452; ChildName=Local; IMEINumber=958694; ChildStatus=Free; ExpiryDate=2011-05-26T16:22:21.29; RemainigDays=1; SOS=1; }; CustomChildList=anyType{ChildID=502; ChildName=testing; IMEINumber=123456; ChildStatus=anyType{}; ExpiryDate=null; RemainigDays=0; SOS=1; }; CustomChildList=anyType{ChildID=523; ChildName=abc; IMEINumber=124124; ChildStatus=anyType{}; ExpiryDate=null; RemainigDays=0; SOS=1; }; }

the actual response is like this:--

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <soap:Body>
      <GetChildListResponse xmlns="http://tempuri.org/">
         <GetChildListResult>
            <CustomChildList>
               <ChildID>452</ChildID>
               <ChildName>Local</ChildName>
               <IMEINumber>958694</IMEINumber>
               <ChildStatus>Free</ChildStatus>
               <ExpiryDate>2011-05-26T16:22:21.29</ExpiryDate>
               <RemainigDays>1</RemainigDays>
               <SOS>1</SOS>
            </CustomChildList>
            <CustomChildList>
               <ChildID>502</ChildID>
               <ChildName>testing</ChildName>
               <IMEINumber>123456</IMEINumber>
               <ChildStatus/>
               <ExpiryDate xsi:nil="true"/>
               <RemainigDays>0</RemainigDays>
               <SOS>1</SOS>
            </CustomChildList>
            <CustomChildList>
               <ChildID>523</ChildID>
               <ChildName>abc</ChildName>
               <IMEINumber>124124</IMEINumber>
               <ChildStatus/>
               <ExpiryDate xsi:nil="true"/>
               <RemainigDays>0</RemainigDays>
               <SOS>1</SOS>
            </CustomChildList>
         </GetChildListResult>
      </GetChildListResponse>
   </soap:Body>
</soap:Envelope>

Please help me if anyone parse the data.

link|improve this question

78% accept rate
what is resfile_name ? and what is dir structure of your project ? – Jigar Joshi May 25 '11 at 9:15
resfile_name is the string which is having the responce data – shweta May 25 '11 at 9:18
feedback

1 Answer

up vote 2 down vote accepted

Following code will look for resources in classpath with the name passed in argument and you are passing whole XML so NPE is obvious.

this.getClass().getResourceAsStream(resfile_name)

You better get the inputStream from URL , as shown in below broken snippet and move ahead

 HttpConnection hc = null;

        try {
          hc = (HttpConnection)Connector.open(url);
          parse(hc.openInputStream());

See

link|improve this answer
thanks a lot my problem is solved – shweta May 26 '11 at 5:42
Glad to know that :) – Jigar Joshi May 26 '11 at 5:48
feedback

Your Answer

 
or
required, but never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.