Разбор XML-файла хранится во внутреннем хранилище с использованием DOM-парсера в Android. - PullRequest
1 голос
/ 10 января 2012

Я создал 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(); 

Что мне нужно поместить вместо «данных» в:

    Document dom = db.parse(new InputSource(new StringReader(data)));

Я знаю, что это глупо, но любая помощь будет признательна.

Ответы [ 4 ]

1 голос
/ 10 января 2012

Вы можете создать входной поток из строки 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-файл в виде строки.

1 голос
/ 10 января 2012

Для чтения 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.

Надеюсь, что выше, может быть полезным для вас.

1 голос
/ 10 января 2012

Вы можете указать FileInputStream в inputource

Document dom = db.parse (новый InputSource (новый FileInputStream (data)));

0 голосов
/ 10 января 2012

Попробуйте этот код для анализа из папки Asset с помощью DOM Parser:

    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 является элементом Node, добавьте блок try ctch согласно требованиям.

...