`
bogongjie
  • 浏览: 236043 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

android 使用XmlSerializer生成XML

 
阅读更多

1. 生成XML类:

public class WriteXml {

	String name = "http://www.w3.org/2001/XMLSchema-instance";
	String value = "http://www.w3.org/2001/XMLSchema";
	private XmlSerializer serializer;
	private StringWriter writer;
	private DevicesInfo devicesInfo;
	private String[] MeasurementData = { "Name", "Status", "Result", "LowerLimit", "UpperLimit", "Units", "CompType", "LogCount", "LogTime" };

	public WriteXml(Context context) {
		writer = new StringWriter();
		serializer = Xml.newSerializer();
		// serializer = new FastXmlSerializer();

		devicesInfo = new DevicesInfo(context);

		Test();
	}

	public String createXmlFile() {
		try {
			serializer.setOutput(writer);
			serializer.startDocument("UTF-8", true);
			serializer.setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true);
			serializer.startTag(null, "TestResults");
			serializer.attribute(null, "xmlns:xsi", name);
			serializer.attribute(null, "xmlns:xsd", value);

			createAllResult();
			createDevicesInfo();

			serializer.startTag(null, "TestDatas");
			Map<String, String> map0 = mList.get(0);
			Map<String, String> map1 = mList.get(1);
			createTestDatas(map0, "SAMPLER_SETUP_STATUS", "PASS", false);
			createTestDatas(map1, "ENUMERATION_STATUS", "PASS", false);
			createTestDatas(map1, "FUNCTIONS_TEST_RESULTS", "PASS", true);
			serializer.endTag(null, "TestDatas");

			serializer.endTag(null, "TestResults");
			serializer.endDocument();
			return writer.toString();
		} catch (Exception e) {
			throw new RuntimeException(e);
		}
	}

	private void createAllResult() {
		try {
			serializer.startTag(null, "OverallResult");
			serializer.startTag(null, "Result");
			serializer.text("PASS");
			serializer.endTag(null, "Result");
			serializer.startTag(null, "ErrorCode");
			serializer.text("NoError");
			serializer.endTag(null, "ErrorCode");
			serializer.startTag(null, "ErrorMessage");
			serializer.endTag(null, "ErrorMessage");
			serializer.startTag(null, "ErrorTestName");
			serializer.endTag(null, "ErrorTestName");
			serializer.startTag(null, "ErrorFullTestName");
			serializer.endTag(null, "ErrorFullTestName");
			serializer.startTag(null, "ErrorDetails");
			serializer.endTag(null, "ErrorDetails");
			serializer.endTag(null, "OverallResult");
		} catch (IllegalArgumentException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IllegalStateException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	private void createDevicesInfo() {
		try {
			serializer.startTag(null, "UnitSerialNumber");
			serializer.text(devicesInfo.getSerialNumber());
			serializer.endTag(null, "UnitSerialNumber");
			serializer.startTag(null, "StartDate");
			serializer.text(devicesInfo.getCurrentTime());
			serializer.endTag(null, "StartDate");
			serializer.startTag(null, "StopDate");
			serializer.text(devicesInfo.getCurrentTime());
			serializer.endTag(null, "StopDate");
			serializer.startTag(null, "ModelName");
			serializer.text(devicesInfo.getModelName());
			serializer.endTag(null, "ModelName");
		} catch (IllegalArgumentException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IllegalStateException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	private void createTestDatas(Map<String, String> map, String name, String status, boolean isloop) {
		try {
			serializer.startTag(null, "TestData");
			serializer.attribute(null, "Name", name);
			serializer.attribute(null, "Status", status);
			serializer.startTag(null, "Measurements");
			if (isloop) {
				for (int i = 0; i < 9; i++) {
					serializer.startTag(null, "MeasurementData");
					createMeasurementData(map);
					serializer.endTag(null, "MeasurementData");
				}
			} else {
				serializer.startTag(null, "MeasurementData");
				createMeasurementData(map);
				serializer.endTag(null, "MeasurementData");
			}

			serializer.endTag(null, "Measurements");
			serializer.endTag(null, "TestData");
		} catch (IllegalArgumentException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IllegalStateException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	private void createMeasurementData(Map<String, String> map) {
		try {
			for (int i = 0; i < 9; i++) {
				serializer.attribute(null, MeasurementData[i], map.get(MeasurementData[i]));
			}
		} catch (IllegalArgumentException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IllegalStateException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	ArrayList<Map<String, String>> mList = new ArrayList<Map<String, String>>();

	private void Test() {
		for (int j = 0; j < 2; j++) {
			Map<String, String> map = new HashMap<String, String>();
			for (int i = 0; i < 9; i++) {
				map.put(MeasurementData[i], devicesInfo.getData(i));
			}
			mList.add(map);
		}
	}
}

 

2. 获取属性类:

public class DevicesInfo {
	private Context context;

	public DevicesInfo(Context context) {
		this.context = context;
		
		initData();
	}

	public String getSerialNumber() {
		return android.os.Build.SERIAL;
	}

	public String getModelName() {
		return android.os.Build.MODEL;
	}

	public String getCurrentTime() {
		SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.ssssss");
		return sDateFormat.format(new java.util.Date());
	}

	// String[] data = {"STATUS","PASS","NoError","NoError","NoError","None","EQ","0",""};

	String[] data = new String[9];

	private void initData() {
		for (int i = 0; i < data.length; i++) {

			switch (i) {
			case 0:
				data[i] = "STATUS";
				break;
			case 1:
				data[i] = "PASS";
				break;
			case 2:
				data[i] = "NoError";
				break;
			case 3:
				data[i] = "NoError";
				break;
			case 4:
				data[i] = "NoError";
				break;
			case 5:
				data[i] = "None";
				break;
			case 6:
				data[i] = "EQ";
				break;
			case 7:
				data[i] = "0";
				break;
			case 8:
				data[i] = getCurrentTime();
				break;
			}
		}
	}
	
	public String getData(int i){
		return data[i];
	}
}

 

3.写成文件:

public boolean WriteFileData(String dirPath, String str) {
		OutputStream out = null;
		try {
			File f = new File(dirPath);
			out = new FileOutputStream(f);
		} catch (Exception e) {
			return false;
		}
		OutputStreamWriter outw = new OutputStreamWriter(out);
		try {
			outw.write(str);
			outw.close();
			out.close();
		} catch (Exception e) {
			return false;
		}
		return true;
	}

 

分享到:
评论

相关推荐

    Android 采用pull生成XML数据

    总结来说,Android中的Pull解析器提供了高效且内存友好的方式来解析XML数据,而使用`XmlSerializer`则可以方便地生成XML。理解并熟练掌握这两种工具,对提升Android应用的数据处理能力至关重要。在实际开发中,可以...

    android解析生成xml文件

    - Android也提供了`XmlPullParser`和`XmlSerializer`,分别用于解析和生成XML。 5. **DimensAdapterUtil**: - 这个文件名可能指的是一个工具类,用于处理与尺寸相关的XML文件,比如dimens.xml,它包含了应用中的...

    android xml多种解析生成

    本文介绍了 Android 中使用多种解析和生成 XML 文件的方法,包括 SAX、DOM 和 Pull 解析器,以及 XmlSerializer 序列化器。这些方法可以帮助开发者更好地处理 XML 文件,并且提高应用程序的性能。

    Android应用中使用XmlSerializer序列化XML数据的教程

    本教程将详细介绍如何在Android应用中使用XmlSerializer来序列化XML数据。 首先,我们需要了解XmlSerializer的主要方法: 1. **创建序列化器**: 使用`Xml.newSerializer()`静态方法创建一个新的XmlSerializer...

    Android review xml 解析 生成

    本篇将深入探讨Android中的XML解析,包括DOM解析、SAX解析和Pull解析,以及如何生成XML文件。 1. DOM解析: DOM(Document Object Model)是一种将XML文档转化为树形结构的方法,允许开发者通过节点遍历和操作XML...

    android下的pull解析器解析和生成xml文件

    1. 使用XmlSerializer:Android提供了XmlSerializer类用于生成XML文档。首先创建XmlSerializer实例,然后通过startDocument()开始一个新的XML文档,接着调用相应的序列化方法如startTag()、text()、attribute()等...

    Android网络下的XML解析和生成.

    本章节将深入探讨Android环境下如何进行XML的解析和生成,这对于理解数据交互、API调用以及本地数据存储至关重要。 一、XML解析 1. DOM解析器:DOM(Document Object Model)模型是把XML文档加载到内存中,形成一...

    Android中采用Pull解析器读取和生成xml内容案例

    对于生成XML内容,Android并没有直接提供Pull解析器的生成功能,但我们可以使用`XmlSerializer`来实现。`XmlSerializer`允许我们序列化对象到XML格式,以下是一个基本的写入示例: ```java XmlSerializer ...

    生成xml文件

    本教程将详细介绍如何使用XML序列化器在Android环境中生成XML文件。 首先,理解XML序列化:它是一种将Java对象转换为XML格式的过程,反之亦然。在Android中,我们可以使用`XmlPullParser`和`XmlSerializer`这两个...

    xml.rar_Android XML_android_java xml parser

    除了解析XML,Android也提供了`XmlSerializer`类用于生成XML。开发者可以通过调用`startElement()`、`endElement()`和`text()`方法来构造XML文档。 六、优化与注意事项 - 在处理大文件时,避免使用DOM解析器,因为...

    Android中XML数据解析

    除了这些解析方式,Android还提供了`org.json`库用于解析JSON数据,以及`org.xmlpull.v1.XmlSerializer`用于生成XML。XML数据在网络通信中通常与HTTP协议结合,通过`java.net.HttpURLConnection`或`android.util....

    使用pull解析器解析和生成xml文件

    生成XML文件的过程相对简单,主要涉及使用`XmlSerializer`类,它提供了一系列的方法来构建XML结构,如`startDocument()`、`startTag()`、`text()`、`endTag()`等。 ### 总结 Pull解析器为Android开发者提供了一种...

    xml文件生成与解析

    以下是一个使用XmlSerializer生成XML的示例: ```java XmlSerializer serializer = Xml.newSerializer(); FileOutputStream outputStream = new FileOutputStream("output.xml"); serializer.setOutput...

    Android中常用的XML生成方法实例分析

    本文将深入探讨两种在Android中生成XML文件的方法,并通过实例代码进行解析。 首先,我们来看第一种方法:使用XMLPullParser库来生成XML文件。XMLPullParser是Android提供的轻量级解析器,它支持事件驱动的解析模式...

    pull解析器通用解析XML与生成XML

    标题中的“pull解析器通用解析XML与生成XML”是指一种基于Pull解析模型处理XML文档的技术。在Android系统中,XML Pull解析器是一个轻量级、高效的解析XML文档的工具,它不需要DOM(Document Object Model)或者SAX...

    Android中的XML解析与文件生成

    本篇文章将详细介绍Android中如何使用XML Pull解析器来解析XML文件,以及如何生成XML文件。 XML Pull解析器是Android系统提供的一种轻量级、低内存消耗的XML解析方式。它基于事件驱动模型,类似于SAX解析器,但比...

    Android之文件&XML

    Android提供`XmlPullParser`和`XmlSerializer`进行解析和生成XML。 XMLDemo可能是一个示例项目,展示了如何在Android中读写XML文件。通常,它会包含一个XML文件,展示如何创建XML结构,以及对应的Java代码,演示...

    采用pull解析器解析和生成xml内容

    本篇文章将深入探讨如何在Android环境中使用内置的Pull解析器来解析和生成XML内容。 首先,我们需要理解什么是Pull解析器。Pull解析器是一种事件驱动的解析模型,它不像SAX解析器那样需要开发者提供回调方法,而是...

    Android提高第七篇之XML解析与生成.doc

    本文主要讲解了如何使用SAX解析XML以及如何生成XML。SAX(Simple API for XML)是一种轻量级的解析器,它不像DOM(Document Object Model)那样将整个XML文档加载到内存中,而是采用事件驱动的方式,逐个处理XML文档...

Global site tag (gtag.js) - Google Analytics