Android 从SD卡解析xml文件
如何从这段代码中解析xml文件。代码是从URL工作的,但我需要从SD卡解析xml文件。 我添加了从SD卡读写的前置任务Android 从SD卡解析xml文件,android,xml-parsing,android-sdcard,Android,Xml Parsing,Android Sdcard,如何从这段代码中解析xml文件。代码是从URL工作的,但我需要从SD卡解析xml文件。 我添加了从SD卡读写的前置任务 Code : menuItems = new ArrayList<HashMap<String, String>>(); final XMLParser parser = new XMLParser(); String xml = parser.getXmlFromUrl(URL); // get
Code :
menuItems = new ArrayList<HashMap<String, String>>();
final XMLParser parser = new XMLParser();
String xml = parser.getXmlFromUrl(URL); // getting XML
Document doc = parser.getDomElement(xml); // getting DOM element
NodeList nl = doc.getElementsByTagName(KEY_ITEM);
// looping through all item nodes <item>
for (int i = 0; i < nl.getLength(); i++) {
// creating new HashMap
HashMap<String, String> map = new HashMap<String, String>();
Element e = (Element) nl.item(i);
// adding each child node to HashMap key => value
map.put(KEY_NAME, parser.getValue(e, KEY_NAME));
map.put(KEY_COST, "Datum: " + parser.getValue(e, KEY_COST));
map.put(KEY_DESC, parser.getValue(e, KEY_DESC));
map.put(KEY_LINK, parser.getValue(e, KEY_LINK));
map.put(KEY_LINK1, parser.getValue(e, KEY_LINK1));
// adding HashList to ArrayList
menuItems.add(map);
}
我需要编辑什么?
SD卡上文件夹的位置为“/SD卡/.folder/”。
我可以在XMLClass上添加该代码吗
我需要编辑什么?SD卡上文件夹的位置为“/SD卡/.folder/”。
我可以在XMLClass上添加该代码吗
这是我的第一个想法
由于源文件位于移动电话中,您可以使用HttpClient
删除所有工作,因为您不需要它。然后您需要读取文件并将其内容分配到字符串中。例如,我建议使用一种高效的方法。要获取外部存储的路径,应该使用提供适当方法的类
伪代码:
public String getXmlFromFile(String filename) {
StringBuffer buff = new StringBuffer();
File root = Environment.getExternalStorageDirectory();
File xml = new File(root, "pathToYourFile");
BufferedReader reader = new BufferedReader(new FileReader(xml));
String line = null;
while ((line = reader.readLine()) != null) {
buff.append(line).append("\n");
}
reader.close();
return buff.toString();
}
Document doc = null;
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
File root = Environment.getExternalStorageDirectory();
File xmlFile = new File(root, "pathToYourFile");
doc = builder.parse(xmlFile);
return doc;
现在,内存中有了XML
字符串,您可以将其传递给getdoelement(stringxml)
方法
备选案文2:
您还可以直接将文件
分配到DocumentBuilder
伪代码:
public String getXmlFromFile(String filename) {
StringBuffer buff = new StringBuffer();
File root = Environment.getExternalStorageDirectory();
File xml = new File(root, "pathToYourFile");
BufferedReader reader = new BufferedReader(new FileReader(xml));
String line = null;
while ((line = reader.readLine()) != null) {
buff.append(line).append("\n");
}
reader.close();
return buff.toString();
}
Document doc = null;
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
File root = Environment.getExternalStorageDirectory();
File xmlFile = new File(root, "pathToYourFile");
doc = builder.parse(xmlFile);
return doc;
注:
您也可以使用
parse()
函数rawInputStream
作为参数。您可以使用XmlPullParser
类和.setInput(bufferedReader)
方法读取文件。通过环境
类获取路径。谢谢,使用选项1。(我必须在XMLClass上添加try):D