在android中读取xml文件 - 解析
问题描述:
我是在android中读取xml文件的新手。我查了谷歌这一点,但无法得到一个适当的解决方案。在android中读取xml文件 - 解析
我希望来解析该XML文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>aaaa</key>
<array>
<string>b</string>
<string>c</string>
<string>d</string>
<string>e</string>
<string>f</string>
</array>
<key>bbbb</key>
<array>
<string>g</string>
<string>h</string>
<string>i</string>
<string>j</string>
<string>k</string>
</array>
</dict>
</plist>
解析后,我希望获得以下对应关系:
AAAA [B,C,d,E,F] - >的列表和/阵列
BBBB [G,H,I,J,K] - >列表/阵列
换句话说,每串(键)应当对应于该键内的字符串的数组。
我该怎么做?另外,我想知道我应该放置XML文件的位置。 (它是在res /生/文件夹,如果是的话,这将是该文件的地址?)
答
第一个平局做你自己:
public final class XMLManager {
public static HashMap<String, ArrayList<String>> getHmPlist(){
HashMap<String, ArrayList<String>> hmPlist = null;
try {
hmPlist = new HashMap<>();
Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new File("D:\\Loic_Workspace\\Test2\\res\\test.xml"));
NodeList ndList = doc.getElementsByTagName("key");
Integer keyLength = ndList.getLength();
String keyValue = null;
NodeList ndArray = null;
Integer ndArrayLength = null;
ArrayList<String> alElement = null;
for(int i=0;i<keyLength;i++){
alElement = new ArrayList<>();
keyValue = ndList.item(i).getTextContent();
if(keyValue != null){
ndArray = ndList.item(i).getNextSibling().getNextSibling().getChildNodes();
ndArrayLength = ndArray.getLength();
for(int j=0;j<ndArrayLength;j++){
if(ndArray.item(j).getNodeName().equalsIgnoreCase("string")){
alElement.add(ndArray.item(j).getFirstChild().getTextContent());
}
}
hmPlist.put(keyValue, alElement);
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return hmPlist;
}
}
为了anserw你关于res/raw /文件夹的问题。是的,你必须把你的XML放在该文件夹中,并通过R类在Java代码中使用它。
希望它能帮助,
http://developer.android.com/training/basics/network-ops/xml.html ..一个很好的教程XML解析 – stinepike
http://www.javacodegeeks.com /2012/01/xml-parsing-using-saxparser-with.html也是一个goo教程。 –