一、如何使用XmlSerializer创建xml文件
XmlSerializer serializer = Xml.newSerializer();
serializer.setOutput(fos,"utf-8");
//开始文档(字符集,文档是否独立)
serializer.startDocument("utf-8",true);
//开始一个标签(参数:命名空间,标签名)
serializer.startTag(null,"book");
//结束一个标签
serializer.endTag(null, "book");
//结束文档
serializer.endDocument();
二、xml序列化和反序列化案例
1.UI搭建(代码如下)
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="44dp"
android:layout_marginLeft="44dp"
android:layout_marginTop="36dp"
android:text="保存Xml"
android:onClick="xmlSave"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="32dp"
android:layout_marginLeft="32dp"
android:text="读取Xml"
app:layout_constraintBottom_toBottomOf="@+id/button"
app:layout_constraintStart_toEndOf="@+id/button"
app:layout_constraintTop_toTopOf="@+id/button"
app:layout_constraintVertical_bias="0.0" />
</androidx.constraintlayout.widget.ConstraintLayout>
2.数据实体类(代码如下)
package com.hiscene.testxml;
public class Book {
String name;
String author;
double price;
}
3.具体逻辑
package com.hiscene.testxml;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Xml;
import android.view.View;
import org.xmlpull.v1.XmlSerializer;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
//保存xml
public void xmlSave(View view)
{
List<Book> list =new ArrayList<>();
for (int i=1;i<=10;i++)
{
Book book =new Book();
book.name="西游记"+i;
book.author="吴承恩"+i;
book.price=i;
list.add(book);
}
XmlSerializer serializer= Xml.newSerializer();
File file =new File(this.getFilesDir(),"books.xml");
try {
OutputStream out =new FileOutputStream(file);
serializer.setOutput(out,"utf-8");
serializer.startDocument("utf-8",true);
serializer.startTag(null,"books");
for (Book book:list)
{
serializer.startTag(null,"book");
serializer.startTag(null,"name");
serializer.text(book.name);
serializer.endTag(null,"name");
serializer.startTag(null,"author");
serializer.text(book.author);
serializer.endTag(null,"author");
serializer.endTag(null,"book");
}
serializer.endTag(null,"books");
serializer.endDocument();
}
catch (Exception e)
{
e.printStackTrace();
}
}
}