版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/linzhihan7410/article/details/53366910
xml数据格式:
存储格式是以节点为主,一个节点衍生出另外的子节点(比如name和phone节点属于lianxiren,lianxiren节点属于xinxi)
存储流程(生成xml数据格式):
1.通过DocumentBuilderFactory获得DocumentBuilder
2.创建Document接口进行DOM转换
3.建立数据节点
4.把数据给相应节点
5.设置节点关系
代码:
private EditText nameEdit;
private EditText phoneEdit;
private Button saveBtn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_xml_file_save);
saveBtn = (Button) findViewById(R.id.btnSaveIsXml);
if(!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
Toast.makeText(this,"SD Card Can't Find",Toast.LENGTH_SHORT).show();
saveBtn.setEnabled(false);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_xml_file_save, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
public void savexmlOnClick(View v) throws ParserConfigurationException, TransformerException {
//通过DocumentBuilderFactory获得DocumentBuilder
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = null;
builder = factory.newDocumentBuilder();
//创建Document接口进行DOM转换
Document document = builder.newDocument();
//建立数据节点
Element jiedian1 = document.createElement("xinxi");
Element jiedian2 = document.createElement("dianhuaben");
Element jiedian31 = document.createElement("name");
Element jiedian32 = document.createElement("phone");
//把数据给相应节点(这里的布局通过两个EditText控件获取用户的数据)
nameEdit = (EditText) findViewById(R.id.nameEdit);
phoneEdit = (EditText) findViewById(R.id.phoneEdit);
jiedian31.appendChild(document.createTextNode(nameEdit.getText().toString()));
jiedian32.appendChild(document.createTextNode(phoneEdit.getText().toString()));
//设置节点关系
jiedian2.appendChild(jiedian31);
jiedian2.appendChild(jiedian32);
jiedian1.appendChild(jiedian2);
document.appendChild(jiedian1);
//剩下的为保存为xml格式的代码
———————————————————————————————–分割线~~~—–
保存xml数据格式流程(保存为xml数据格式):
1.把xml数据格式放进DOMSource里
2.用StreamResult指定保存地址
3.通过TransformerFactory得到Transformer
4.通过setOutputProperty方法设置编码格式
5.通过transform方法输出保存
代码:
//把xml数据格式放进DOMSource里
DOMSource domSource = new DOMSource(document);
//用StreamResult指定保存地址(这里是放到了SD卡里面,所以在OnCreate方法里有做SD卡的判断)
File file = new File(Environment.getExternalStorageDirectory()+"/dianhuaben.xml");
StreamResult dizhi = new StreamResult(file);
//通过TransformerFactory得到Transformer
TransformerFactory factory1 = TransformerFactory.newInstance();
Transformer transformer = null;
transformer = factory1.newTransformer();
//通过setOutputProperty方法设置编码格式
transformer.setOutputProperty(OutputKeys.ENCODING,"utf-8");
//通过transform方法输出保存(参数为得到的数据,以及得到的地址)
transformer.transform(domSource, dizhi);
//做一个保存成功的提醒
Toast.makeText(getApplicationContext(),"Save Success!!!",Toast.LENGTH_SHORT).show();