【问题标题】:How can i parse through xml data from consumed web service Android?我如何解析来自消费的 Web 服务 Android 的 xml 数据?
【发布时间】:2010-10-04 14:21:08
【问题描述】:

我有一个网络服务.asmx,它在使用时会以以下形式给出响应:

<lData>
    <name>...</name>
    <posx>..</posx>
    <posy>...</posy>
</lData>

我使用Ksoap2 使用Android 中的Web 服务,我看到响应为string

anyType {
    lData = anyType{
        name=....;
        posx=....;
        posy=....
    ;}
;}

所以,我从我的网络服务中获得了正确的数据,但我不知道如何正确解析它。 我想找到一种方法来遍历不同的节点。

我尝试使用SAXParser,但似乎无法理解应该使用什么来代替url。在教程中,我按照url 上的xml 文件的链接进行操作,但我的url 只是部分“完成”,因为我需要先使用Web 服务。

MyXMLHandler myXMLHandler = new MyXMLHandler();
xr.setContentHandler(myXMLHandler);
xr.parse(new InputSource(sourceUrl.openStream()));

这是我应该使用的上面的东西,但还有另一个 openStream 吗?

感谢您的帮助!

【问题讨论】:

    标签: android xml service xml-parsing


    【解决方案1】:

    SAXParser 需要一个 InputStream 进行解析。我想你是说你有一个要解析的 xml 字符串?为此,您需要将 String 转换为输入流:

    InputStream is = new ByteArrayInputStream(text.getBytes("UTF-8"));
    

    【讨论】:

    • 嗨!好吧,Web 服务以 xml 形式发送数据,因此如果我使用 response.toString(),我可以在 TextView 中读取它。所以我已经看到它正在工作,即 Web 服务连接。但现在我想获取这些信息并稍后在列表视图中使用它。我尝试在上面使用它,但为了做到这一点,我首先必须转换我的信封.getResponse();到一个字符串。我在想也许有没有那一步的方法?我没有让它工作,我的应用程序现在有这个“抱歉关闭”错误,所以我必须仔细检查代码以找出问题所在。
    • 在 InputStream 之后,我应该使用 InputSource is2 = new InputSource(is); xr.parse(is2); ?再次感谢!
    • 你暗示你已经把它作为一个字符串,这就是我建议的原因。我同意,一般来说,不需要将其转换为字符串。你有什么对象类型?关于第二个问题,SAXParser 有一个解析方法,它接受一个 InputStream,所以你不需要把它变成一个 InputSource。
    • 这是我的对象:response = envelope.getResponse(); SAXParserFactory spf = SAXParserFactory.newInstance(); SAXParser sp = spf.newSAXParser(); XMLReader xr = sp.getXMLReader(); MyXMLHandler myXMLHandler = new MyXMLHandler(); xr.setContentHandler(myXMLHandler); // xr.parse(new InputSource(sourceUrl.openStream()));
    • 抱歉,我不知道如何格式化这些评论框中的问题。而不是 inputSource(sourceURL.openStream),你建议我应该使用什么?
    猜你喜欢
    • 2016-02-18
    • 1970-01-01
    • 1970-01-01
    • 2012-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-08
    • 1970-01-01
    相关资源
    最近更新 更多