如何从xml获取节点值?

时间:2014-06-15 20:09:22

标签: android xml

我正在尝试从/data/data/aas/a.xml中读取xml文件。但我不知道如何开始。我很好地重新安装/数据为rw和chmod 777 /data/data/a.xml。根深蒂固。 它适用于adb。

我的xml格式是......

<map>
    <string name="aaa">123</string>
    <string name="bbb">222</string>
    ...
    ...
    <string name="ccc">999</string>
</map>

我希望以这种方式获得ccc(999)的值。我怎样才能实现它。请帮助我..我是android编程的新手!请给我完整的解释。

代码在我的onCreate()..

  process = Runtime.getRuntime().exec("su");
  os = new DataOutputStream(process.getOutputStream());
  os.writeBytes("mount -o remount rw /data");
  os.writeBytes("chmod 777 data/data/com.aas.a/a.xml");

... 在a.xml中

  <?xml version="1.0" encoding="utf-8" standalone="yes" ?> 
  <map>
     <string name="ccc">0000</string>
  </map>

... 我想要0000。谢谢..

3 个答案:

答案 0 :(得分:1)

将DOM与java一起使用。这是example

答案 1 :(得分:1)

如果您不介意将the library添加到项目中,可以将dom4j与java一起使用并使用XPATH命令获取所需的值:

public static void main( String[] args ) throws DocumentException{
    org.dom4j.Document doc = null;
    File theXml = new File("pathToXml.xml");

    SAXReader reader = new SAXReader();
    doc = (org.dom4j.Document) reader.read(theXml);
    Element elem = (Element) doc.selectSingleNode("/map/string[@name='ccc']");
    System.out.println(elem.getStringValue());
}

答案 2 :(得分:-1)

如果您只想要xml的ccc,那么您可以使用一个将字符串拆分为标记的模式。

试试这个:

Pattern p = Pattern.compile("name=\"ccc\">(.*?)</string>");
Matcher m = p.matcher(your_xml_here);
if (m.find()) 
  Log.d("result: ",m.group(1)); // => "3"

其中your_xml_here是字符串形式的xml ......