Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.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中使用DOM解析器解析存储在内部存储器中的XML文件。_Android_Xml_Dom_Xml Parsing_Domparser - Fatal编程技术网

在android中使用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

我已经在设备的内部存储器中创建了一个xml文件,如android开发者网站所述。现在我想使用DOM解析器解析该文件。我需要做什么才能让DOM解析器读取我的XML文件?? 下面是一个片段:

    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");