解析xml的技术有很多中,本函数使用的是DOM技术,其中person类中有id,name,age三个属性。xml文件内容如下:
<?xml version="1.0" encoding="utf-8"?>
<persons>
<person id="7">
<name>shifu</name>
<age>21</age>
</person>
<person id="20">
<name>xiaobaozi</name>
<age>21</age>
</person>
<person id="33">
<name>xiaozeng</name>
<age>22</age>
</person>
</persons>
下面是对上面的xml文件进行解析的详细代码。当然,解析前要将xml文件写道输入流当中。
public List<Person> parser(InputStream inStream) throws Exception {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = factory.newDocumentBuilder();
/* 对输入流进行解析 */
Document document = documentBuilder.parse(inStream);
/* 取得xml中以元素形式组成的文档树 */
Element root = document.getDocumentElement();
/* 取得以person为根元素的所有子元素的集合(包括person下的所有元素) */
NodeList personNodes = root.getElementsByTagName("person");
/* 存放解析出来的对象 */
List<Person> persons = new ArrayList<Person>();
for(int i = 0; i < personNodes.getLength(); ++i)
{
/* 取得person节点 */
Element personNode = (Element) personNodes.item(i);
Person person = new Person();
/* 取得person节点的id属性的值并赋值给person对象 */
person.setId(new Integer(personNode.getAttribute("id")));
/* 取得person节点的所有子节点 */
NodeList childNodes = personNode.getChildNodes();
for(int k = 0; k < childNodes.getLength(); ++k)
{
/* 此处要注意,如果子元素是文本节点而不是元素节点,是不能转换成Element对象的
* 所以下面这句应当放到if语句里面,否则将会出现类型转换错误
*/
// Element child = (Element) childNodes.item(k);
/* 判断当前节点是否是元素节点 */
if(childNodes.item(k).getNodeType() == Node.ELEMENT_NODE)
{
/* 是元素节点,可以转换 */
Element child = (Element) childNodes.item(k);
/* 该节点的名称是否是name或age,是则取得他们第一个子节点的文本的值赋值给person对象 */
if("name".equals(child.getNodeName()))
{
person.setName(child.getFirstChild().getNodeValue());
}
else if("age".equals(child.getNodeName()))
{
person.setAge(new Short(child.getFirstChild().getNodeValue()));
}
}
}
/* 将生成的对象添加到persons集合中 */
persons.add(person);
}
inStream.close();
return persons;
}
分享到:
相关推荐
在Java平台中如何来使用DOM解析xml文件,
使用DOM解析XML
java学习笔记——使用DOM解析XML和使用SAX解析XML
android上使用DOM解析XML的简单示例。android4.0以上。
使用DOM解析XML.docx
文档对象模型 节点和节点树 使用DOM加载XML文档 使用DOM访问、创建和修改节点
java使用dom解析服务器端xml文件
XML应用开发(软件品牌)-1期 第6单元 单元设计-使用DOM解析XML.doc 学习资料 复习资料 教学资源
DOM解析XML文件例子DOM解析XML文件例子DOM解析XML文件例子
XML应用开发(软件品牌)-1期 第6单元 单元测试卷-使用DOM解析XML文档.doc 学习资料 复习资料 教学资源
XML应用开发(软件品牌)-1期 第6单元 单元测试卷答案-使用DOM解析XML文档.doc 学习资料 复习资料 教学资源
使用dom解析XML,演示了如何使用DOM的五个基本对象来解析xml。
DOM解析XML 创建XML
Android使用Dom方式解析XML,虽然xml文件太大时不建议用dom方式解析,但是如果文件比较小,也不失为一种选择。项目中xml放在assets文件夹下,view绑定使用butterknife
Dom 解析讲解,很清晰,易懂,对于初学者是个很好的资源
java dom解析xml <?xml version="1.0" encoding="UTF-8"?> <Head> <FileVersion>010000</FileVersion> <FileLength>00000CC3</FileLength> <FileTime>20100629173405</FileTime> <KeyIndex>1...
用dom解析xml文件
java dom 解析 xml 实例 介绍w3c中的元素的用法,以及在解析xml过程中用到的API进行详细解释
本文件是关于dom4j解析xml文档时需要的包的集合
android为我们提供了多种解析方式,DOM解析,代码操作简单,一直为解析xml文件的一个不错的选择