【问题标题】:How to save data when parsing XML?解析XML时如何保存数据?
【发布时间】:2016-10-13 12:08:12
【问题描述】:

我有一个 xml 文件:

<?xml version="1.0" encoding="utf-8" ?>
<list>
<file name="a" size="559393"/>
<file name="b" size="1766945"/>
...
</list>

使用 SAX 解析器,我需要获取属性值(在我的例子中是所有标签 file 的名称和大小值)并写入一个集合以供我的程序进一步工作。

我应该如何意识到这一点?为每个标签 file 创建一个包含字段 namesize 的对象,并将其全部添加到 ArrayListObject ?

【问题讨论】:

  • 听起来没那么难。只需定义一个对象 MyFile 与成员 'name' 和 'size',一个 ArrayList&lt;MyFile&gt; 来填充其中的所有内容并将其与 XML 解析相结合
  • 是的。希望使用 SAX 解析器,您可以获得属性名称和大小的值。你可以创建一个 bean/pojo 类,在这里说 FileInfonamesize。通过解析和迭代 XML 值,您可以将这些值设置在 FileInfo 对象中,并且可以添加到 ArrayList 对象中。如果您的文件名是唯一的,您可以使用Map,以避免ArrayList 迭代获取值。
  • @Vish 你能解释一下吗:“如果你的文件名是唯一的,你可以使用 Map 来避免 ArrayList 迭代获取值”
  • 所以Map是一个键值对集合。如果文件名是唯一的,则更新的值是可见的,否则将被覆盖。希望我对以下代码很清楚。 Map&lt;String, FileInfo&gt; map = new HashMap&lt;String, FileInfo&gt;(); FileInfo fileInfo = new FileInfo(name, size); map.put(name, fileInfo); 要获取文件详细信息,您只需要map.get(name)

标签: java android xml sax


【解决方案1】:

是的,你应该已经有了具有 name 和 size 属性的对象,当你在 start element 方法中时,做这样的事情。

@Override
public void startElement(String uri, String localName, String qName, Attributes attributes)
        throws SAXException {

    if (qName.equalsIgnoreCase("file")) {
        String name = attributes.getValue("name");
        String size = attributes.getValue("size");
        file file = new file (name,size);
        list.add(file);
        }
      }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-15
    • 1970-01-01
    • 1970-01-01
    • 2021-11-02
    • 1970-01-01
    • 2013-11-11
    相关资源
    最近更新 更多