首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >xml parsing+Java ME

xml parsing+Java ME
EN

Stack Overflow用户
提问于 2011-05-25 16:59:49
回答 1查看 443关注 0票数 2

我正在编辑我的问题,以明确关于字符串名称结果的想法,我想做xml parsing.where,我正在传递一些参数给url,它给我一些xml格式的响应,我把它放在字符串名称结果中,现在我想解析那个字符串(xml parsing.where)。我正在使用下面的代码:

代码语言:javascript
复制
     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;
    }

向量(“GetChildList”,Constants.callSoap);调用常量中的callsoap方法,常量的代码为:--

代码语言:javascript
复制
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("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
            //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; }; }

实际的响应如下:--

代码语言:javascript
复制
                                              452                Local                958694                Free                2011-05-26T16:22:21.29                1                1                                          502                testing                123456                                                0                1                                          523                abc                124124                                                0                1
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-05-25 17:31:59

下面的代码将在类路径中查找带有传入参数的名称的资源,并且传递的是整个XML,因此NPE是显而易见的。

代码语言:javascript
复制
this.getClass().getResourceAsStream(resfile_name)

您最好从URL获取inputStream,如下面的片段所示,然后继续前进。

代码语言:javascript
复制
 HttpConnection hc = null;

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

请参阅

  • Parsing XML in java-me
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6121914

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档