如何使用Dom从sdcard解析XML文件

时间:2011-03-29 04:38:05

标签: java android

我想从sdcard解析xml文件。我使用DOM概念。这里我附上了代码

InputStream filename = null;
    Document obj_doc = null;
    DocumentBuilderFactory doc_build_fact = null;
    DocumentBuilder doc_builder = null;
    filename = new FileInputStream("/sdcard/filename.xml");
    doc_build_fact = DocumentBuilderFactory.newInstance();
    doc_builder = doc_build_fact.newDocumentBuilder();

    obj_doc = doc_builder.parse(filename);

    NodeList obj_nod_list = null;
    if (null != obj_doc) {
        org.w3c.dom.Element feed = obj_doc.getDocumentElement();
        obj_nod_list = feed.getElementsByTagName("MyTag"); 
    }

我不知道如何从xml文件中获取String。任何人都可以指导我从xml获取字符串变量。

1 个答案:

答案 0 :(得分:0)

您对DocumentBuilder等的初始化看起来是正确的。

您的XML文件是什么样的?如果您有这样的事情:

<?xml version="1.0" encoding="UTF-8"?>
<moviedatabase>
  <movie>
    <title>Ace Ventura</title>
    <year>1995</year>
  </movie>

  <movie>
    <title>Elisabethtown</title>
    <year>2005</year>
  </movie>
</moviedatabase>

您可以首先获取NodeList中的所有电影:

Element root = obj_root.getDocumentElement();
NodeList items = root.getElementsByTagName("movie");

然后你可以获得如下的标题字符串:

for (int i = 0; i < items.getLength(); i++) {           
    Node item = items.item(i);
    NodeList properties = item.getChildNodes();
    for (int j = 0; j < properties.getLength(); j++) {
            Node property = properties.item(j);
        String name = property.getNodeName();
        if (name.equalsIgnoreCase("title")) {
             // Store it where you want
             String myTitle = property.getFirstChild().getNodeValue(); 
        }
            if (name.equalsIgnoreCase("year")) {
             String year = property.getFirstChild().getNodeValue(); 
        }
    }
}

您可以在以下部分找到有关DOM解析here的更多信息:使用DOM

享受