【问题标题】:parsing xml file using java for -- android based application使用java解析xml文件——基于android的应用程序
【发布时间】:2012-10-03 01:15:02
【问题描述】:

我是在 java 中解析 xml 文件的新手。我对如何从属性中解析值有一些想法,而值位于标签中,但在我的 XML 中,值位于不同的位置:

<ul xml:base="http//www.example.com">
    <li>
        <strong>Ram</strong>
        : 45%
    </li>
    <li>
        <strong>CPU</strong>
        : 49%
    </li>
    <li>
        <strong>Undecided</strong>
        : 6%
    </li>
</ul>

这是我的 XML 格式,这里我想从 XML 中解析百分比值。如果有人知道如何解析这些值,请指导我?

【问题讨论】:

    标签: java android xml xml-parsing


    【解决方案1】:

    有几种方法可以做到这一点。

    您可以使用例如 simplexml 框架。

    为此,您可以尝试创建一些可以帮助您解决问题的类。

    UL 等级:

    import java.util.ArrayList;
    import java.util.List;
    
    import org.simpleframework.xml.ElementList;
    import org.simpleframework.xml.Root;
    
    @Root(name = "ul", strict = false)
    public class ULTag {
    
       @ElementList(name = "li", inline = true, required = false)
       List<LITag> liTags = new ArrayList<LITag>();
    
       public List<LITag> getLiTags() {
          return liTags;
       }
    
       public void setLiTags(List<LITag> liTags) {
          this.liTags = liTags;
       }
    
       public ULTag() {
       }
    
    }
    

    李班:

    import org.simpleframework.xml.Element;
    import org.simpleframework.xml.Root;
    
    @Root(name = "li", strict = false)
    public class LITag {
    
       @Element(name = "strong", required = false)
       private String strong;
    
       public LITag() {
       }
    
       public String getStrong() {
          return strong;
       }
    
       public void setStrong(String strong) {
          this.strong = strong;
       }
    
    }
    

    如果您想在其中插入更多内容,也可以创建一个强类。但这里我们不需要它。

    import org.simpleframework.xml.Element;
    import org.simpleframework.xml.Root;
    
    @Root(name = "strong", strict = false)
    public class StrongTag {
    
       @Element(name = "strong", required = false)
       private String strong;
    
       public StrongTag() {
       }
    
       public String getStrong() {
          return strong;
       }
    
       public void setStrong(String strong) {
          this.strong = strong;
       }
    }
    

    反序列化一个简单的对象

    Serializer serializer = new Persister();
    File source = new File("yourxmlexampl.xml");
    
    ULTag ulTag = serializer.read(ULTag.class, source);
    

    使用 ulTag 随心所欲。例如:

    String percent=ulTag.getLITags().get(0).getStrong();
    

    也许这可以帮助你。填空给我写信。 这是一个关于 simplexml 框架的链接 http://simple.sourceforge.net/download/stream/doc/tutorial/tutorial.php

    【讨论】:

      【解决方案2】:

      对于 XML 解析,您有 Android、DOM 解析器、Pull 解析器等多种选择。 更快和推荐的一种是 XMLPullParser(参见http://developer.android.com/training/basics/network-ops/xml.html)。

      我正在使用它,它在处理大数据时比 DOM 解析器好得多。

      如果没有大数据需要解析,可以使用DOM解析器。

      这里是文档或 XMLPullParser:http://developer.android.com/reference/org/xmlpull/v1/XmlPullParser.html

      以及如何使用它的教程:http://www.vogella.com/articles/AndroidXML/article.html

      这里有一个关于Android中XML解析的通用教程

      http://www.ibm.com/developerworks/opensource/library/x-android/

      【讨论】:

      • 感谢 Milos,我对 jdom 有了一些了解。但我的 xml 包含
      • Ram 之类的标签:45%
      • 。我可以知道如何从属性和直接标签中解析值。但我是这种标签的新手。你能指导我如何从 和百分比值中解析值。提前致谢。
    • 要获取jdom中的文本,可以使用Element.getText()方法。
    • 正如@user802421 所说,您可以使用getText() 方法。 XMLPullParser 也是如此。获取元素后,您可以使用 getText(); 仅提取他的值(在标签内);
    • 如果您使用的是 dom,Simple XML 可能会很有趣。 simple.sourceforge.net
    • 猜你喜欢
      相关资源
      最近更新 更多
      热门标签