2012-01-10 82 views
0

我已经在设备的内部存储器中创建了一个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(); 

什么我需要把“数据”的发生:

​​

我知道这是愚蠢的,但任何帮助,将不胜感激。

回答

0

您可以像下面那样创建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文件作为字符串传递。

+0

解决了它!谢谢! – 2012-01-10 11:09:27

+0

你总是受欢迎.. :-) – 2012-01-10 11:20:25

+0

*“请记住你正在将xml文件作为字符串传递。”* ...你怎么做到这一点?你如何从'File'对象转到'InputStream'? – 2014-09-29 15:45:27

1

可以给的FileInputStream中的InputSource

文献DOM = db.parse(新的InputSource(新的FileInputStream(数据)));

+0

并提供文件名代替数据? – 2012-01-10 10:22:53

+0

不,您需要从文件中获取输入流,如下所示: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

+0

它不能正常工作。我在内部存储器中创建了文件,并将其读回到字符串变量“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

0

读取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. 

希望以上可能对你有用。

+0

我正在收回文件内容。但我的问题是如何使DOM解析器读取文件或inputStream数据? – 2012-01-10 10:45:30

+0

现在您可以使用 Document dom = db.parse(finalData); – 2012-01-10 10:50:13

+0

我明白了。谢谢 :) – 2012-01-10 11:21:19

0

试试这个代码使用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块按要求。

相关问题