我正在尝试从/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。谢谢..
答案 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
......