【问题标题】:Parsing a string of XML in Android在 Android 中解析 XML 字符串
【发布时间】:2012-05-27 22:32:54
【问题描述】:

我知道有大量关于此的文档,但我就是不明白。我一直在寻找一段时间,我想就我的具体情况获得一些帮助,以阐明这一点。

我使用了一个 Http 客户端来获取一个 XML 字符串,内容如下:

<groups>
<group>
    <id>35</id>
    <sport>Racing</sport>
    <name>Indianapolis 500</name>
    <date>27/4/2012</date>
    <time>12:00</time>
    <period>PM</period>
    <location>Indiana</location>
</group>
<group>
    <id>36</id>
    <sport>Baseball</sport>
    <name>Miami Heat game</name>
    <date>27/4/2012</date>
    <time>3:00</time>
    <period>PM</period>
    <location>Miami, FL</location>
</group>
</groups>

我有另一个名为 XMLParser 的类,其方法名为 takeNameGetID,它采用整个 XML 字符串和它在 &lt;name&gt; 中查找的名称字符串,并应尝试找到具有该名称的“块”并返回对应的&lt;id&gt; 为整数。这让我很困惑。

public int takeNamegetID(String name, String allXML) {
    //This is what I can't figure out
}

我在第一堂课上这样称呼它:

XMLparser parser = new XMLparser();
int actualId = parser.takeNamegetID(getGroupString(), getGroupXML());

getGroupString()getGroupsXML() 这两种方法是不言自明的。一个获取它正在寻找的字符串作为名称,另一个获取整个 XML。

我需要一个示例或某人来向我展示我想要的 takeNamegetID 方法的实现。我一直在寻找,我认为最好只问我的具体问题。谢谢!

【问题讨论】:

  • Java 中的 XML 解析很冗长,尤其是在 Android 上(第三方解析器可能工作也可能不工作)。期望有人为您编写代码可能有点过分。话虽如此,您可以使用 SAX (exampledepot.com/egs/javax.xml.parsers/BasicSax.html) 或 DOM (exampledepot.com/egs/javax.xml.parsers/BasicDom.html) 或 XmlPullParser (xmlpull.org/v1/download/unpacked/doc/quick_intro.html)。前两个已经使用 Java 很长时间了,并且在许多书籍和博客文章中都有介绍。
  • 好的。这就是我为什么遇到这么多麻烦的原因。我只是以为我错过了一些东西,但我想它真的那么复杂。我会用你给我的第一个 SAX 再试一次。它是内置在 Android 或 Java 中的,还是我必须导入一些外部包或其他东西才能使用它?
  • 我在评论中引用的所有三个解决方案都内置在 Android 中。

标签: java android xml xml-parsing sax


【解决方案1】:

我建议你使用SimpleXML(http://simple.sourceforge.net/download.php),我在两个android项目中都使用过,它小巧好用。

java代码:

import org.simpleframework.xml.Element;

public class Group {
@Element
private int id;
@Element
private String sport;
@Element
...

public int getId() {
    return id;
}

public void setId(int id) {
    this.id = id;
}
...
}


import java.io.File;
import java.util.List;    
import org.simpleframework.xml.*   

public class Groups {
    @ElementList(inline=true)
    private List<Group> group;

    public List<Group> getGroup() {
        return group;
    }

    public void setGroup(List<Group> group) {
        this.group = group;
    }

    public static void main(String[] args) throws Exception {
        Serializer serializer = new Persister();
        Groups groups = serializer.read(Groups.class, your_xml_inputstream);
        System.out.println(groups.getGroup().size());
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多