在android
dom 解析xml方式文章中,简单介绍了dom解析xml的应用。今天在原文章的基础上,说一下android中dom创建xml的应用。
首先:创建的文件会放在/data/data/cn.com.xxx(当前包名)/files下面。
创建生成的xml文件如下所示:
<?xml version="1.0" encoding="utf-8"?>
<classes>
<group name="一年级" num="10">
<person name="小明" age="7">
<chinese>语文90</chinese>
<english>英语80</english>
</person>
</group>
</classes>
可以直接用android
dom 解析xml方式文章中方法去解析,注意修改一点:
// 从assets文件夹下获取文件 转换成输入流
// instream = this.getresources().getassets().open(filename);
// doc = docbuilder.parse(instream);
inputstream fosstream = openfileinput(filename);
doc = docbuilder.parse(fosstream);
同时,filename取得方法:
string[] filenames = getfilesdir().list();
string filename = filenames[0];
解析出来的结果是
以下是创建xml文件的代码:
private void createxmlfile(){
try {
documentbuilderfactory factory = documentbuilderfactory
.newinstance();
documentbuilder builder = factory.newdocumentbuilder();
document doc = builder.newdocument();
//创建xml根元素
element rootele = doc.createelement("classes");
doc.appendchild(rootele);
//创建xml二级元素
element groupele = doc.createelement("group");
groupele.setattribute("name", "一年级");
groupele.setattribute("num", "10");
//创建xml person元素
element personele = doc.createelement("person");
//personele 的属性和属性值
personele.setattribute("name", "小明");
personele.setattribute("age", "7");
//创建personele的子元素
element chinese = doc.createelement("chinese");
//创建personele的子元素的值
chinese.appendchild(doc.createtextnode("语文90"));
personele.appendchild(chinese);
element english = doc.createelement("english");
english.appendchild(doc.createtextnode("英语80"));
personele.appendchild(english);
groupele.appendchild(personele);
rootele.appendchild(groupele);
transformerfactory tf = transformerfactory.newinstance();
transformer transformer = tf.newtransformer();
domsource source = new domsource(doc);
transformer.setoutputproperty(outputkeys.encoding, "utf-8");
transformer.setoutputproperty(outputkeys.indent, "no");
//创建文件存放在 /data/data/cn.xxx.xxx(当前包)/files
fileoutputstream fos = openfileoutput("dom.xml", context.mode_private);
//创建文件存放在 /data/data/cn.xxx.xxx(当前包)/cache
// fileoutputstream fos = op
printwriter pw = new printwriter(fos);
streamresult result = new streamresult(pw);
transformer.transform(source, result);
system.out.println("生成xml文件成功!");
} catch (parserconfigurationexception e) {
system.out.println(e.getmessage());
} catch (transformerconfigurationexception e) {
system.out.println(e.getmessage());
} catch (transformerexception e) {
system.out.println(e.getmessage());
} catch (filenotfoundexception e) {
system.out.println(e.getmessage());
}
}
以上就是android dom方式创建xml的内容。