在android中使用DOM解析器解析存储在内部存储器中的XML文件。
我已经在设备的内部存储器中创建了一个xml文件,如android开发人员网站上所述。我现在想用DOM解析器解析文件。我需要做什么来使DOM解析器读取我的XML文件? 这里有一个片段:在android中使用DOM解析器解析存储在内部存储器中的XML文件。
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document dom = db.parse(new InputSource(new StringReader(data)));
dom.getDocumentElement().normalize();
什么我需要把“数据”的发生:
我知道这是愚蠢的,但任何帮助,将不胜感激。
您可以像下面那样创建xml字符串的输入流,然后获取可解析以获取值的节点。
InputStream is = new ByteArrayInputStream(theXMLString.getBytes("UTF-8"));
// Build XML document
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(is);
请记住,您将xml文件作为字符串传递。
可以给的FileInputStream中的InputSource
文献DOM = db.parse(新的InputSource(新的FileInputStream(数据)));
并提供文件名代替数据? – 2012-01-10 10:22:53
不,您需要从文件中获取输入流,如下所示:File sdcard = Environment.getExternalStorageDirectory(); //获取文本文件 File file = new File(sdcard,“file.txt”); //从文件中读取文本 StringBuilder text = new StringBuilder(); BufferedReader br = new BufferedReader(new FileReader(file)); – jeet 2012-01-10 10:26:48
它不能正常工作。我在内部存储器中创建了文件,并将其读回到字符串变量“data”中。当我显示数据的内容时,它给了我文件输出。但是,当我通过db.parse(...)“数据”,我没有得到一个错误,但不知何故,我也没有得到任何解析结果。更多代码:dom.getDocumentElement()。normalize(); Element root =(Element)dom.getDocumentElement(); NodeList items =((Document)root).getElementsByTagName(“network”); Toast.makeText(getApplicationContext(), \t \t \t “节点长度:” + items.getLength(), \t \t \t Toast.LENGTH_LONG).show(); – 2012-01-10 10:34:37
读取XML文件,你应该尝试以下
FileInputStream in = new FileInputStream("/sdcard/text.txt");
StringBuffer data = new StringBuffer();
InputStreamReader isr = new InputStreamReader(in);
BufferedReader inRd = new BufferedReader(isr);
String text;
while ((text = inRd.readLine()) != null) {
inLine.append(text);
inLine.append("\n");
}
in.close();
String finalData =data.toString(); // Here is your data.
希望以上可能对你有用。
我正在收回文件内容。但我的问题是如何使DOM解析器读取文件或inputStream数据? – 2012-01-10 10:45:30
现在您可以使用 Document dom = db.parse(finalData); – 2012-01-10 10:50:13
我明白了。谢谢 :) – 2012-01-10 11:21:19
试试这个代码使用DOM解析器资产文件夹解析:
DocumentBuilderFactory DBF;
DocumentBuilder DB;
Document dom;
Element elt;
DBF = DocumentBuilderFactory.newInstance();
DB = DBF.newDocumentBuilder();
dom = DB.parse(new InputSource(getAssets().open("city.xml")));
elt = dom.getDocumentElement();
NodeList items = elt.getElementsByTagName("item");
其中产品Node元素,加试CTCH块按要求。
解决了它!谢谢! – 2012-01-10 11:09:27
你总是受欢迎.. :-) – 2012-01-10 11:20:25
*“请记住你正在将xml文件作为字符串传递。”* ...你怎么做到这一点?你如何从'File'对象转到'InputStream'? – 2014-09-29 15:45:27