我一直在寻找一个简单的例子,每个用于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)
希望这也有助于其他新手。
答案 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;
}
我希望这会有所帮助:/