您的位置:首页 > 其它

使用Xml文件格式存储数据

2016-11-27 21:18 337 查看
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();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐