下面讲解一个DOM解析XML文件,望大家参考,可能写得比较乱,大家不要介意。
第一步:创建一个xml文件:xmltest.xml
<?xml version="1.0" encoding="utf-8"?>
<layouts>
<layout name="mytextview">
<text>这是一个TextView</text>
</layout>
<layout name="mybutton">
<text>这是一个按钮</text>
</layout>
</layouts>
第二步:创建一个对应上面xml文件的javabean类XMLTest.java
public class XMLTest implements Serializable{
private static final long serialVersionUID = 1L;
private String name;
private String textView;
private String button;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getTextView() {
return textView;
}
public void setTextView(String textView) {
this.textView = textView;
}
public String getButton() {
return button;
}
public void setButton(String button) {
this.button = button;
}
}
第三步:编写实现解析代码:
public class XMLParseTestActivity extends Activity {
private ListView listview;
String xmlArray[] = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
listview = (ListView) findViewById(R.id.mylist);
//调用解析xml文件后返回的集合
List list1 = getXMLTestFromXml("xmltest.xml");
//初始化数据大小
xmlArray = new String[list1.size()];
//取出集合中的信息
for (int i = 0; i < list1.size(); i++) {
XMLTest msg = (XMLTest) list1.get(i);
xmlArray[i] = msg.getName() + "," + msg.getTextView();
}
//定义适配器
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, xmlArray);
adapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
listview.setAdapter(adapter);
}
//解析xml文件的方法
private List<XMLTest> getXMLTestFromXml(String string) {
/*
* 解析xml文件步骤
* 1、声明DocumentBuilderFactory,DocumentBuilder,Document对象
* 2、DocumentBuilderFactory对象实例化DocumentBuilder对象
* 3、DocumentBuilder对象实例化Document对象
*/
List<XMLTest> xmltests = new ArrayList<XMLTest>();
DocumentBuilderFactory factory = null;
DocumentBuilder builder = null;
Document document = null;
InputStream is = null;
try {
// 实例化factory对象
factory = DocumentBuilderFactory.newInstance();
// 实例化builder对象
builder = factory.newDocumentBuilder();
//获得xml文档并以流打开
is = getResources().getAssets().open(string);
//builder解析 获得文档类型
document = builder.parse(is);
// 找到根Element
Element root = document.getDocumentElement();
//获得layout为标签的集合
NodeList nodes = root.getElementsByTagName("layout");
// 遍历根节点所有子节点,layout下所有的layout
XMLTest xmltest = null;
for (int i = 0; i < nodes.getLength(); i++) {
xmltest = new XMLTest();
// 获取layout元素节点
Element layoutElement = (Element) (nodes.item(i));
// 获取layout中name的值
xmltest.setName(layoutElement.getAttribute("name"));
// 获取layout下的text
Element text = (Element) layoutElement.getElementsByTagName(
"text").item(0);
xmltest.setTextView(text.getFirstChild().getNodeValue());
xmltests.add(xmltest);
}
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return xmltests;
}
}
显示效果如下: