【问题标题】:Using DOM on Android to read, write & edit file on disk在 Android 上使用 DOM 读取、写入和编辑磁盘上的文件
【发布时间】:2012-02-22 13:56:02
【问题描述】:

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

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

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

所以请指出一些简单的例子 1) 读取 2) 写入 3) 使用单个 api/解析器/框架进行编辑 - 比如说 DOM 或其他。其中还包括该文件的存储位置和方式 1) 内部存储 2) 外部 (SD)

希望这对其他新手也有帮助。

【问题讨论】:

    标签: android xml edit


    【解决方案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;
            }
    

    我希望这会有所帮助:/

    【讨论】:

      猜你喜欢
      • 2019-11-22
      • 1970-01-01
      • 2016-08-29
      • 1970-01-01
      • 2023-04-01
      • 2011-02-13
      • 2018-02-25
      • 2012-08-18
      • 1970-01-01
      相关资源
      最近更新 更多