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数据,而使用`XmlSerializer`则可以方便地生成XML。理解并熟练掌握这两种工具,对提升Android应用的数据处理能力至关重要。在实际开发中,可以...
- Android也提供了`XmlPullParser`和`XmlSerializer`,分别用于解析和生成XML。 5. **DimensAdapterUtil**: - 这个文件名可能指的是一个工具类,用于处理与尺寸相关的XML文件,比如dimens.xml,它包含了应用中的...
本文介绍了 Android 中使用多种解析和生成 XML 文件的方法,包括 SAX、DOM 和 Pull 解析器,以及 XmlSerializer 序列化器。这些方法可以帮助开发者更好地处理 XML 文件,并且提高应用程序的性能。
本教程将详细介绍如何在Android应用中使用XmlSerializer来序列化XML数据。 首先,我们需要了解XmlSerializer的主要方法: 1. **创建序列化器**: 使用`Xml.newSerializer()`静态方法创建一个新的XmlSerializer...
本篇将深入探讨Android中的XML解析,包括DOM解析、SAX解析和Pull解析,以及如何生成XML文件。 1. DOM解析: DOM(Document Object Model)是一种将XML文档转化为树形结构的方法,允许开发者通过节点遍历和操作XML...
1. 使用XmlSerializer:Android提供了XmlSerializer类用于生成XML文档。首先创建XmlSerializer实例,然后通过startDocument()开始一个新的XML文档,接着调用相应的序列化方法如startTag()、text()、attribute()等...
本章节将深入探讨Android环境下如何进行XML的解析和生成,这对于理解数据交互、API调用以及本地数据存储至关重要。 一、XML解析 1. DOM解析器:DOM(Document Object Model)模型是把XML文档加载到内存中,形成一...
对于生成XML内容,Android并没有直接提供Pull解析器的生成功能,但我们可以使用`XmlSerializer`来实现。`XmlSerializer`允许我们序列化对象到XML格式,以下是一个基本的写入示例: ```java XmlSerializer ...
本教程将详细介绍如何使用XML序列化器在Android环境中生成XML文件。 首先,理解XML序列化:它是一种将Java对象转换为XML格式的过程,反之亦然。在Android中,我们可以使用`XmlPullParser`和`XmlSerializer`这两个...
除了解析XML,Android也提供了`XmlSerializer`类用于生成XML。开发者可以通过调用`startElement()`、`endElement()`和`text()`方法来构造XML文档。 六、优化与注意事项 - 在处理大文件时,避免使用DOM解析器,因为...
除了这些解析方式,Android还提供了`org.json`库用于解析JSON数据,以及`org.xmlpull.v1.XmlSerializer`用于生成XML。XML数据在网络通信中通常与HTTP协议结合,通过`java.net.HttpURLConnection`或`android.util....
生成XML文件的过程相对简单,主要涉及使用`XmlSerializer`类,它提供了一系列的方法来构建XML结构,如`startDocument()`、`startTag()`、`text()`、`endTag()`等。 ### 总结 Pull解析器为Android开发者提供了一种...
以下是一个使用XmlSerializer生成XML的示例: ```java XmlSerializer serializer = Xml.newSerializer(); FileOutputStream outputStream = new FileOutputStream("output.xml"); serializer.setOutput...
本文将深入探讨两种在Android中生成XML文件的方法,并通过实例代码进行解析。 首先,我们来看第一种方法:使用XMLPullParser库来生成XML文件。XMLPullParser是Android提供的轻量级解析器,它支持事件驱动的解析模式...
标题中的“pull解析器通用解析XML与生成XML”是指一种基于Pull解析模型处理XML文档的技术。在Android系统中,XML Pull解析器是一个轻量级、高效的解析XML文档的工具,它不需要DOM(Document Object Model)或者SAX...
本篇文章将详细介绍Android中如何使用XML Pull解析器来解析XML文件,以及如何生成XML文件。 XML Pull解析器是Android系统提供的一种轻量级、低内存消耗的XML解析方式。它基于事件驱动模型,类似于SAX解析器,但比...
Android提供`XmlPullParser`和`XmlSerializer`进行解析和生成XML。 XMLDemo可能是一个示例项目,展示了如何在Android中读写XML文件。通常,它会包含一个XML文件,展示如何创建XML结构,以及对应的Java代码,演示...
本篇文章将深入探讨如何在Android环境中使用内置的Pull解析器来解析和生成XML内容。 首先,我们需要理解什么是Pull解析器。Pull解析器是一种事件驱动的解析模型,它不像SAX解析器那样需要开发者提供回调方法,而是...
本文主要讲解了如何使用SAX解析XML以及如何生成XML。SAX(Simple API for XML)是一种轻量级的解析器,它不像DOM(Document Object Model)那样将整个XML文档加载到内存中,而是采用事件驱动的方式,逐个处理XML文档...