在Android上使用DOM来读取,写入&编辑磁盘上的文件

时间:2012-02-22 13:56:03

标签: android xml edit

我一直在寻找一个简单的例子,每个用于Android的读/写/编辑XML。该文件可以保存在应用程序文件结构的res / raw文件夹或assets / other文件夹中。但是没有教程适用于简单的代码示例。

一些教程讨论了不同的XML解析器,如SAX,DOM等,但最好使用特定的API /解析器来完成所有3个示例。与SAX不同,SAX只能读取xml。

http://www.mkyong.com/java/how-to-modify-xml-file-in-java-dom-parser/ 这是一个很好的DOM教程,但它不适用于Android。我有问题决定在哪里存储xml文件!!创建InputStream&用于android的StreamResult或其他对象。

所以请指出一些简单的例子:1)阅读2)编写3)编辑使用SINGLE api / parser / framework-比如DOM或其​​他。其中还包括哪里&如何存储该文件1)内部存储2)外部(SD)

希望这也有助于其他新手。

1 个答案:

答案 0 :(得分:1)

如果您仍然可以使用帮助,我很乐意帮助您编写问题的XML部分。然而,我自己在编辑XML方面需要帮助。如果我要使用字符串解析,我知道如何编辑XML,但我不知道如何更新原始XML文件... [对不起,如果我在那里失去你。]但我要去编辑一个适合我的代码,这样你就可以看一眼。 :)
-Kai(也是新闻)
从Android中读取XML: - )

演示XML

<UltraSpecialEvents>
   <UltraSpecialEvent Name= "USE1">
      <UltraSpecialInfo Name="USI1" Detail="Blah" TimeStamp="hh:mm:ss" />
      <UltraSpecialInfo Name="USI2" Detail="Blah Blahs" TimeStamp="hh:mm:ss" />
      <UltraSpecialInfo Name="USI3" Detail="And More Blahs" TimeStamp="hh:mm:ss" />
   </UltraSpecialEvent>
   <UltraSpecialEvent Name= "UnusedGarbageStuff't">
      <UltraSpecialInfo Name="USI1" Detail="Blah" TimeStamp="hh:mm:ss" />
      <UltraSpecialInfo Name="USI2" Detail="Blah Blahs" TimeStamp="hh:mm:ss" />
      <UltraSpecialInfo Name="USI3" Detail="And More Blahs" TimeStamp="hh:mm:ss" />
   </UltraSpecialEvent>
</UltraSpecialEvents>

阅读XML

public ArrayList<ArrayList<String>> get() {
            ArrayList<ArrayList<String>> classes = new ArrayList<ArrayList<String>>();
            try {
                boolean inTargetedTag = false;
                XmlPullParser parser = XmlPullParserFactory.newInstance().newPullParser();
                parser.setInput(inputStream, null);
                int eventType = parser.getEventType();
                while (eventType != XmlPullParser.END_DOCUMENT) {
                    switch (eventType) {
                    case XmlPullParser.START_TAG:
                        String tagName = parser.getName();
                        if (tagName.equalsIgnoreCase("UltraSpecialEvent")) {
                            if (parser.getAttributeValue(null, "Name").equals("USE1")) {
                                inTargetedTag = true;
                            } else {
                                inTargetedTag = false;
                            }
                        } if (tagName.equalsIgnoreCase("UltraSpecialInfo")) {
                            if (inTargetedTag) {
                                ArrayList<String> single_Info = new ArrayList<String>();
                                single_Info.add(parser.getAttributeValue(null, "Name"));
                                single_Info.add(parser.getAttributeValue(null, "Detail"));
                                single_Info.add(parser.getAttributeValue(null, "TimeStamp"));
                                bundled_Info.add(single_Info);
                            }
                        }
                        break;
                    }
                    eventType = parser.next();
                }
            } catch (FileNotFoundException e) {
            } catch (IOException e) {
            } catch (Exception e) {
            }
            return bundled_Info;
        }

我希望这会有所帮助:/