Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 从SD卡解析xml文件_Android_Xml Parsing_Android Sdcard - Fatal编程技术网

Android 从SD卡解析xml文件

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

如何从这段代码中解析xml文件。代码是从URL工作的,但我需要从SD卡解析xml文件。 我添加了从SD卡读写的前置任务

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()
函数raw
InputStream
作为参数。

您可以使用
XmlPullParser
类和
.setInput(bufferedReader)
方法读取文件。通过
环境
类获取路径。

谢谢,使用选项1。(我必须在XMLClass上添加try):D