输出xml:
import java.io.File;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class MyDOMDemo extends Activity {
private TextView name = null; // 文本输入组件
private TextView email = null; // 文本输入组件
private Button but = null; // 按钮组件
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setContentView(R.layout.main); // 调用布局管理器
this.name = (TextView) super.findViewById(R.id.name) ; // 取得组件
this.email = (TextView) super.findViewById(R.id.email) ;// 取得组件
this.but = (Button) super.findViewById(R.id.but) ; // 取得组件
this.but.setOnClickListener(new OnClickListenerImpl()) ; // 设置监听
}
private class OnClickListenerImpl implements OnClickListener {
@Override
public void onClick(View view) {
if(!Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED)){ // 如果sdcard不存在
return ; // 返回被调用处
}
File file = new File(Environment
.getExternalStorageDirectory().toString()
+ File.separator
+ "sdudata" + File.separator + "member.xml") ; // 定义File类对象
if (! file.getParentFile().exists()) { // 父文件夹不存在
file.getParentFile().mkdirs() ; // 创建文件夹
}
// 1、建立DocumentBuilderFactory,以用于取得DocumentBuilder
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
// 2、通过DocumentBuilderFactory取得DocumentBuilder
DocumentBuilder builder = null;
try {
builder = factory.newDocumentBuilder();
} catch (ParserConfigurationException e) {
e.printStackTrace();
}
// 3、定义Document接口对象,通过DocumentBuilder类进行DOM树的转换操作
Document doc = null;
doc = builder.newDocument(); // 创建一个新的文档
// 4、建立各个操作节点
Element addresslist = doc.createElement("addresslist") ;// 建立节点
Element linkman = doc.createElement("linkman") ; // 建立节点
Element name = doc.createElement("name") ; // 建立节点
Element email = doc.createElement("email") ; // 建立节点
// 5、设置节点的文本内容,即:为每一个节点添加文本节点
name.appendChild(doc.createTextNode(MyDOMDemo.this.name.getText()
.toString())); // 设置文本
email.appendChild(doc.createTextNode(MyDOMDemo.this.email.getText()
.toString())) ; // 设置文本
// 6、设置节点关系
linkman.appendChild(name) ; // 子节点
linkman.appendChild(email) ; // 子节点
addresslist.appendChild(linkman) ; // 子节点
doc.appendChild(addresslist) ; // 文档上保存节点
// 7、输出文档到文件之中
TransformerFactory tf = TransformerFactory.newInstance();
Transformer t = null;
try {
t = tf.newTransformer();
} catch (TransformerConfigurationException e1) {
e1.printStackTrace();
}
t.setOutputProperty(OutputKeys.ENCODING, "GBK") ; // 设置编码
DOMSource source = new DOMSource(doc); // 输出文档
StreamResult result = new StreamResult(file); // 指定输出位置
try {
t.transform(source, result); // 输出
} catch (TransformerException e) {
e.printStackTrace();
}
}
}
}
import java.io.File;
import java.io.IOException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class MyDOMDemo extends Activity {
private TextView name = null; // 文本输入组件
private TextView email = null; // 文本输入组件
private Button but = null; // 按钮组件
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setContentView(R.layout.main); // 调用布局管理器
this.name = (TextView) super.findViewById(R.id.name) ; // 取得组件
this.email = (TextView) super.findViewById(R.id.email) ;// 取得组件
this.but = (Button) super.findViewById(R.id.but) ; // 取得组件
this.but.setOnClickListener(new OnClickListenerImpl()) ; // 设置监听
}
private class OnClickListenerImpl implements OnClickListener {
@Override
public void onClick(View view) {
if(!Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED)){ // 如果sdcard不存在
return ; // 返回被调用处
}
File file = new File(Environment
.getExternalStorageDirectory().toString()
+ File.separator
+ "sdudata" + File.separator + "member.xml") ; // 定义File类对象
if (! file.exists()) { // 父文件夹不存在
return ; // 返回被调用处
}
// 1、建立DocumentBuilderFactory,以用于取得DocumentBuilder
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
// 2、通过DocumentBuilderFactory取得DocumentBuilder
DocumentBuilder builder = null;
try {
builder = factory.newDocumentBuilder();
} catch (ParserConfigurationException e) {
e.printStackTrace();
}
// 3、定义Document接口对象,通过DocumentBuilder类进行DOM树的转换操作
Document doc = null;
try {
doc = builder.parse(file); // 读取指定路径的xml文件
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
// 4、查找linkman的节点
NodeList nl = doc.getElementsByTagName("linkman");
// 5、输出NodeList中第一个子节点中文本节点的内容
for (int x = 0; x < nl.getLength(); x++) { // 循环输出节点内容
Element e = (Element) nl.item(x) ; // 取得每一个元素
MyDOMDemo.this.name.setText(e.getElementsByTagName("name")
.item(0).getFirstChild().getNodeValue()); // 设置文本
MyDOMDemo.this.email.setText(e.getElementsByTagName("email")
.item(0).getFirstChild().getNodeValue()); // 设置文本
}
}
}
}
需要权限:<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />