XmlSerializer的使用

本文介绍了一种使用Java实现的XML序列化生成器的方法,该生成器可以将短信列表序列化为UTF-8编码的XML文件。文章通过具体代码展示了如何创建XML文件、设置文档编码、开始和结束标签等过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

xml的序列化生成器

try {
    		//声明xml序列化
			XmlSerializer xs = Xml.newSerializer();
			//得到sdcard路径
			String strPath = Environment.getExternalStorageDirectory().getPath();
			//创建xml文件
			File file = new File(strPath, "xml2.xml");
			System.out.println(strPath);
			FileOutputStream fos = new FileOutputStream(file);
			//初始化序列化器,设置生成的xml文件的编码格式
			xs.setOutput(fos, "utf-8");
			//开始文档,xml文件第一行中的那个编码格式
			xs.startDocument("utf-8", true);
			//开始标签
			xs.startTag(null, "ssms");
			for (Sms sms : smsList) {
				xs.startTag(null, "body");
				xs.text(sms.getStrBody());
				xs.endTag(null, "body");
				xs.startTag(null, "address");
				xs.text(sms.getStrAddress());
				xs.endTag(null, "address");
				xs.startTag(null, "date");
				xs.text(sms.getStrDate());
				xs.endTag(null, "date");
			}
			
			xs.endTag(null, "ssms");
			//执行完这句才真正保存
			xs.endDocument();
			Toast.makeText(MainActivity.this, "保存成功", Toast.LENGTH_SHORT).show();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}


在C#中,如果你想要使用`XmlSerializer`来序列化和反序列化XML数据,首先你需要创建一个类(数据契约),这个类将会映射到XML文档中的结构。假设你有一个`KrosyData`类对应于上面的XML: ```csharp [Serializable] public class KrosyData { [XmlElement("header")] public Header header { get; set; } [XmlElement("body")] public Body body { get; set; } } public class Header { [XmlElement("requestID")] public string requestID { get; set; } public SourceHost sourceHost { get; set; } public TargetHost targetHost { get; set; } } public class SourceHost { [XmlElement("hostname")] public string hostname { get; set; } [XmlElement("ipAddress")] public string ipAddress { get; set; } [XmlElement("macAddress")] public string macAddress { get; set; } } public class TargetHost { [XmlElement("hostname")] public string hostname { get; set; } } public class Body { [XmlElement("visualControl")] public VisualControl visualControl { get; set; } } public class VisualControl { [XmlElement("workingRequest")] public WorkingRequest workingRequest { get; set; } } public class WorkingRequest { [XmlAttribute("scanned")] public DateTime scanned { get; set; } [XmlAttribute("intksk")] public long intksk { get; set; } } ``` 接下来,你可以使用`XmlSerializer`进行序列化和反序列化操作: **序列化(将对象转换为XML):** ```csharp KrosyData krosyData = new KrosyData { header = new Header(), body = new Body() }; // ...填充header和body属性 using (var stream = File.CreateText("output.xml")) { var serializer = new XmlSerializer(typeof(KrosyData)); serializer.Serialize(stream, krosyData); } ``` **反序列化(从XML恢复对象):** ```csharp if (!File.Exists("output.xml")) throw new FileNotFoundException(); using (var stream = File.OpenText("output.xml")) { var serializer = new XmlSerializer(typeof(KrosyData)); KrosyData deserializedData = (KrosyData)serializer.Deserialize(stream); // Now you can access the deserialized properties like this: string requestID = deserializedData.header.requestID; } ``` 注意,`XmlSerializer`适用于简单的、非嵌套的数据结构,对于复杂的XML结构,可能会变得不够灵活。这时可以考虑使用`XElement`或`Json.NET`等其他库。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Barry__

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值