在android中使用DOM解析器解析存储在内部存储器中的XML文件。
我已经在设备的内部存储器中创建了一个xml文件,如android开发者网站所述。现在我想使用DOM解析器解析该文件。我需要做什么才能让DOM解析器读取我的XML文件?? 下面是一个片段:在android中使用DOM解析器解析存储在内部存储器中的XML文件。,android,xml,dom,xml-parsing,domparser,Android,Xml,Dom,Xml Parsing,Domparser,我已经在设备的内部存储器中创建了一个xml文件,如android开发者网站所述。现在我想使用DOM解析器解析该文件。我需要做什么才能让DOM解析器读取我的XML文件?? 下面是一个片段: DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); Document dom = db.parse(new In
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document dom = db.parse(new InputSource(new StringReader(data)));
dom.getDocumentElement().normalize();
我需要在以下位置放置什么来代替“数据”:
我知道这很愚蠢,但如果有任何帮助,我们将不胜感激。您可以在inputsource中提供FileInputStream
documentdom=db.parse(新的InputSource(新的FileInputStream(data)) 您可以创建如下所示的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文件。要读取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解析器从资产文件夹进行解析:
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");
如果item是节点元素,则根据需要添加try-ctch块。并给出文件名来代替数据?否,您需要从文件中获取输入流,如下所示:file sdcard=Environment.getExternalStorageDirectory()//获取文本文件=新文件(sdcard,“file.txt”)//从文件StringBuilder text=new StringBuilder()读取文本;BufferedReader br=新的BufferedReader(新文件读取器(文件));它不起作用。我在内部存储器中创建了该文件,并将其读回字符串变量“data”。当我显示数据内容时,它会给我文件输出。但是当我在db.parse(…)中传递“数据”时,我没有得到错误,但不知何故,我也没有得到任何解析结果。进一步的代码:dom.getDocumentElement().normalize();元素根=(元素)dom.getDocumentElement();节点列表项=((文档)根).getElementsByTagName(“网络”);Toast.makeText(getApplicationContext(),“节点长度:”+items.getLength(),Toast.length_LONG.show();我不知道你为什么要通过outputstream读取文件,我们可以通过输入流读取资源,而InputSource需要一个输入流,读取器在参数中,请仔细检查,如果你的文件编写代码成功执行,问题可能就在那里。我正在恢复文件内容的原样。但我的问题是如何让DOM解析器读取文件或inputStream数据??现在可以使用文档DOM=db.parse(finalData);“请记住,您正在以字符串形式传递xml文件。”。。。你是怎么做到的?如何从
文件
对象转换为输入流
?
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");