org.xmlpull.v1.XmlSerializer#setFeature ( )源码实例Demo

下面列出了org.xmlpull.v1.XmlSerializer#setFeature ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: za-Farmer   文件: AccessibilityNodeInfoDumper.java
public static void dumpWindowHierarchy(UiDevice device, OutputStream out) throws IOException {
    XmlSerializer serializer = Xml.newSerializer();
    serializer.setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true);
    serializer.setOutput(out, "UTF-8");

    serializer.startDocument("UTF-8", true);
    serializer.startTag("", "hierarchy"); // TODO(allenhair): Should we use a namespace?
    serializer.attribute("", "rotation", Integer.toString(device.getDisplayRotation()));

    for (AccessibilityNodeInfo root : device.getWindowRoots()) {
        dumpNodeRec(root, serializer, 0, device.getDisplayWidth(), device.getDisplayHeight());
    }

    serializer.endTag("", "hierarchy");
    serializer.endDocument();
}
 
源代码2 项目: android_9.0.0_r45   文件: TaskPersister.java
private StringWriter saveToXml(TaskRecord task) throws IOException, XmlPullParserException {
    if (DEBUG) Slog.d(TAG, "saveToXml: task=" + task);
    final XmlSerializer xmlSerializer = new FastXmlSerializer();
    StringWriter stringWriter = new StringWriter();
    xmlSerializer.setOutput(stringWriter);

    if (DEBUG) xmlSerializer.setFeature(
            "http://xmlpull.org/v1/doc/features.html#indent-output", true);

    // save task
    xmlSerializer.startDocument(null, true);

    xmlSerializer.startTag(null, TAG_TASK);
    task.saveToXml(xmlSerializer);
    xmlSerializer.endTag(null, TAG_TASK);

    xmlSerializer.endDocument();
    xmlSerializer.flush();

    return stringWriter;
}
 
源代码3 项目: microMathematics   文件: FormulaList.java
/**
 * XML interface: procedure writes this list into the given stream
 */
public boolean writeToStream(OutputStream stream, String name)
{
    try
    {
        final StringWriter writer = new StringWriter();
        final XmlSerializer serializer = Xml.newSerializer();
        serializer.setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true);
        serializer.setOutput(writer);
        serializer.startDocument("UTF-8", true);
        serializer.setPrefix(FormulaList.XML_PROP_MMT, FormulaList.XML_MMT_SCHEMA);
        serializer.startTag(FormulaList.XML_NS, FormulaList.XML_MAIN_TAG);
        serializer.startTag(FormulaList.XML_NS, XML_LIST_TAG);
        documentSettings.writeToXml(serializer);
        final ArrayList<FormulaBase> fList = formulaListView.getFormulas(FormulaBase.class);
        for (FormulaBase f : fList)
        {
            final String term = f.getBaseType().toString().toLowerCase(Locale.ENGLISH);
            serializer.startTag(FormulaList.XML_NS, term);
            f.writeToXml(serializer, String.valueOf(f.getId()));
            serializer.endTag(FormulaList.XML_NS, term);
        }
        serializer.endTag(FormulaList.XML_NS, XML_LIST_TAG);
        serializer.endTag(FormulaList.XML_NS, FormulaList.XML_MAIN_TAG);
        serializer.endDocument();
        stream.write(writer.toString().getBytes());
        return true;
    }
    catch (Exception e)
    {
        final String error = String.format(activity.getResources().getString(R.string.error_file_write), name);
        Toast.makeText(activity, error, Toast.LENGTH_LONG).show();
    }
    return false;
}
 
源代码4 项目: NetGuard   文件: ActivityDns.java
private void xmlExport(OutputStream out) throws IOException {
    XmlSerializer serializer = Xml.newSerializer();
    serializer.setOutput(out, "UTF-8");
    serializer.startDocument(null, true);
    serializer.setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true);
    serializer.startTag(null, "netguard");

    DateFormat df = new SimpleDateFormat("E, d MMM yyyy HH:mm:ss Z", Locale.US); // RFC 822

    try (Cursor cursor = DatabaseHelper.getInstance(this).getDns()) {
        int colTime = cursor.getColumnIndex("time");
        int colQName = cursor.getColumnIndex("qname");
        int colAName = cursor.getColumnIndex("aname");
        int colResource = cursor.getColumnIndex("resource");
        int colTTL = cursor.getColumnIndex("ttl");
        while (cursor.moveToNext()) {
            long time = cursor.getLong(colTime);
            String qname = cursor.getString(colQName);
            String aname = cursor.getString(colAName);
            String resource = cursor.getString(colResource);
            int ttl = cursor.getInt(colTTL);

            serializer.startTag(null, "dns");
            serializer.attribute(null, "time", df.format(time));
            serializer.attribute(null, "qname", qname);
            serializer.attribute(null, "aname", aname);
            serializer.attribute(null, "resource", resource);
            serializer.attribute(null, "ttl", Integer.toString(ttl));
            serializer.endTag(null, "dns");
        }
    }

    serializer.endTag(null, "netguard");
    serializer.endDocument();
    serializer.flush();
}
 
/** Creates a report file and populates it with the report data from the completed tests. */
private void generateDocument(File reportDir, long elapsedTime) {
  String timestamp = getTimestamp();

  OutputStream stream = null;
  try {
    stream = createOutputResultStream(reportDir);
    XmlSerializer serializer = XmlPullParserFactory.newInstance().newSerializer();
    serializer.setOutput(stream, UTF_8);
    serializer.startDocument(UTF_8, null);
    serializer.setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true);
    // TODO: insert build info
    printTestResults(serializer, timestamp, elapsedTime);
    serializer.endDocument();
    String msg =
        String.format(
            "XML test result file generated at %s. %s",
            getAbsoluteReportPath(), runResult.getTextSummary());
    Log.i(LOG_TAG, msg);
  } catch (IOException | XmlPullParserException e) {
    Log.e(LOG_TAG, "Failed to generate report data", e);
    // TODO: consider throwing exception
  } finally {
    if (stream != null) {
      try {
        stream.close();
      } catch (IOException ignored) {
      }
    }
  }
}
 
源代码6 项目: android_9.0.0_r45   文件: UserManagerService.java
@VisibleForTesting
void writeUserLP(UserData userData, OutputStream os)
        throws IOException, XmlPullParserException {
    // XmlSerializer serializer = XmlUtils.serializerInstance();
    final XmlSerializer serializer = new FastXmlSerializer();
    serializer.setOutput(os, StandardCharsets.UTF_8.name());
    serializer.startDocument(null, true);
    serializer.setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true);

    final UserInfo userInfo = userData.info;
    serializer.startTag(null, TAG_USER);
    serializer.attribute(null, ATTR_ID, Integer.toString(userInfo.id));
    serializer.attribute(null, ATTR_SERIAL_NO, Integer.toString(userInfo.serialNumber));
    serializer.attribute(null, ATTR_FLAGS, Integer.toString(userInfo.flags));
    serializer.attribute(null, ATTR_CREATION_TIME, Long.toString(userInfo.creationTime));
    serializer.attribute(null, ATTR_LAST_LOGGED_IN_TIME,
            Long.toString(userInfo.lastLoggedInTime));
    if (userInfo.lastLoggedInFingerprint != null) {
        serializer.attribute(null, ATTR_LAST_LOGGED_IN_FINGERPRINT,
                userInfo.lastLoggedInFingerprint);
    }
    if (userInfo.iconPath != null) {
        serializer.attribute(null,  ATTR_ICON_PATH, userInfo.iconPath);
    }
    if (userInfo.partial) {
        serializer.attribute(null, ATTR_PARTIAL, "true");
    }
    if (userInfo.guestToRemove) {
        serializer.attribute(null, ATTR_GUEST_TO_REMOVE, "true");
    }
    if (userInfo.profileGroupId != UserInfo.NO_PROFILE_GROUP_ID) {
        serializer.attribute(null, ATTR_PROFILE_GROUP_ID,
                Integer.toString(userInfo.profileGroupId));
    }
    serializer.attribute(null, ATTR_PROFILE_BADGE,
            Integer.toString(userInfo.profileBadge));
    if (userInfo.restrictedProfileParentId != UserInfo.NO_PROFILE_GROUP_ID) {
        serializer.attribute(null, ATTR_RESTRICTED_PROFILE_PARENT_ID,
                Integer.toString(userInfo.restrictedProfileParentId));
    }
    // Write seed data
    if (userData.persistSeedData) {
        if (userData.seedAccountName != null) {
            serializer.attribute(null, ATTR_SEED_ACCOUNT_NAME, userData.seedAccountName);
        }
        if (userData.seedAccountType != null) {
            serializer.attribute(null, ATTR_SEED_ACCOUNT_TYPE, userData.seedAccountType);
        }
    }
    if (userInfo.name != null) {
        serializer.startTag(null, TAG_NAME);
        serializer.text(userInfo.name);
        serializer.endTag(null, TAG_NAME);
    }
    synchronized (mRestrictionsLock) {
        UserRestrictionsUtils.writeRestrictions(serializer,
                mBaseUserRestrictions.get(userInfo.id), TAG_RESTRICTIONS);
        UserRestrictionsUtils.writeRestrictions(serializer,
                mDevicePolicyLocalUserRestrictions.get(userInfo.id),
                TAG_DEVICE_POLICY_RESTRICTIONS);
        UserRestrictionsUtils.writeRestrictions(serializer,
                mDevicePolicyGlobalUserRestrictions.get(userInfo.id),
                TAG_DEVICE_POLICY_GLOBAL_RESTRICTIONS);
    }

    if (userData.account != null) {
        serializer.startTag(null, TAG_ACCOUNT);
        serializer.text(userData.account);
        serializer.endTag(null, TAG_ACCOUNT);
    }

    if (userData.persistSeedData && userData.seedAccountOptions != null) {
        serializer.startTag(null, TAG_SEED_ACCOUNT_OPTIONS);
        userData.seedAccountOptions.saveToXml(serializer);
        serializer.endTag(null, TAG_SEED_ACCOUNT_OPTIONS);
    }

    serializer.endTag(null, TAG_USER);

    serializer.endDocument();
}
 
源代码7 项目: Androzic   文件: KmlFiles.java
/**
 * Saves track to file.
 * 
 * @param file valid <code>File</code>
 * @param track <code>Track</code> object containing the list of track points to save
 * @throws IOException
 */
public static void saveTrackToFile(final File file, final Track track) throws IOException
{
	SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ", Locale.US);
	XmlSerializer serializer = Xml.newSerializer();
	serializer.setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true);
	BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file, false)));
	serializer.setOutput(writer);
	serializer.startDocument("UTF-8", null);
	serializer.setPrefix("", KML_NAMESPACE);
	serializer.startTag(KML_NAMESPACE, KmlParser.KML);
	serializer.startTag(KML_NAMESPACE, KmlParser.DOCUMENT);
	serializer.startTag(KML_NAMESPACE, KmlParser.STYLE);
	serializer.attribute("", KmlParser.ID, "trackStyle");
	serializer.startTag(KML_NAMESPACE, KmlParser.LINESTYLE);
	serializer.startTag(KML_NAMESPACE, KmlParser.COLOR);
	serializer.text(String.format("%08X", KmlParser.reverseColor(track.color)));
	serializer.endTag(KML_NAMESPACE, KmlParser.COLOR);
	serializer.startTag(KML_NAMESPACE, KmlParser.WIDTH);
	serializer.text(String.valueOf(track.width));
	serializer.endTag(KML_NAMESPACE, KmlParser.WIDTH);
	serializer.endTag(KML_NAMESPACE, KmlParser.LINESTYLE);
	serializer.endTag(KML_NAMESPACE, KmlParser.STYLE);
	serializer.startTag(KML_NAMESPACE, KmlParser.FOLDER);
	serializer.startTag(KML_NAMESPACE, KmlParser.NAME);
	serializer.text(track.name);
	serializer.endTag(KML_NAMESPACE, KmlParser.NAME);
	serializer.startTag(KML_NAMESPACE, KmlParser.OPEN);
	serializer.text("0");
	serializer.endTag(KML_NAMESPACE, KmlParser.OPEN);
	serializer.startTag(KML_NAMESPACE, KmlParser.TIMESPAN);
	serializer.startTag(KML_NAMESPACE, KmlParser.BEGIN);
	serializer.text(sdf.format(new Date(track.getPoint(0).time)));
	serializer.endTag(KML_NAMESPACE, KmlParser.BEGIN);
	serializer.startTag(KML_NAMESPACE, KmlParser.END);
	serializer.text(sdf.format(new Date(track.getLastPoint().time)));
	serializer.endTag(KML_NAMESPACE, KmlParser.END);
	serializer.endTag(KML_NAMESPACE, KmlParser.TIMESPAN);
	serializer.startTag(KML_NAMESPACE, KmlParser.STYLE);
	serializer.startTag(KML_NAMESPACE, KmlParser.LISTSTYLE);
	serializer.startTag(KML_NAMESPACE, KmlParser.LISTITEMTYPE);
	serializer.text("checkHideChildren");
	serializer.endTag(KML_NAMESPACE, KmlParser.LISTITEMTYPE);
	serializer.endTag(KML_NAMESPACE, KmlParser.LISTSTYLE);
	serializer.endTag(KML_NAMESPACE, KmlParser.STYLE);
	
	int part = 1;
	boolean first = true;
	startTrackPart(serializer, part, track.name);
	List<TrackPoint> trackPoints = track.getAllPoints();
	synchronized (trackPoints)
	{
		for (TrackPoint tp : trackPoints)
		{
			if (!tp.continous && !first)
			{
				stopTrackPart(serializer);
				part++;
				startTrackPart(serializer, part, track.name);
			}
			serializer.text(String.format("%f,%f,%f ", tp.longitude, tp.latitude, tp.elevation));
			first = false;
		}
	}
	stopTrackPart(serializer);
	serializer.endTag(KML_NAMESPACE, KmlParser.FOLDER);
	serializer.endTag(KML_NAMESPACE, KmlParser.DOCUMENT);
	serializer.endTag(KML_NAMESPACE, KmlParser.KML);
	serializer.endDocument();
	serializer.flush();
	writer.close();
}
 
源代码8 项目: a   文件: XmlUtils.java
/**
 * Flatten a Map into an output stream as XML.  The map can later be
 * read back with readMapXml().
 *
 * @param val The map to be flattened.
 * @param out Where to write the XML data.
 * @see #writeMapXml(Map, String, XmlSerializer)
 * @see #writeListXml
 * @see #writeValueXml
 * @see #readMapXml
 */
public static void writeMapXml(Map val, OutputStream out)
        throws XmlPullParserException, java.io.IOException {
    XmlSerializer serializer = new FastXmlSerializer();
    serializer.setOutput(out, "utf-8");
    serializer.startDocument(null, true);
    serializer.setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true);
    writeMapXml(val, null, serializer);
    serializer.endDocument();
}
 
源代码9 项目: HtmlCompat   文件: XmlUtils.java
/**
 * Flatten a List into an output stream as XML.  The list can later be
 * read back with readListXml().
 *
 * @param val The list to be flattened.
 * @param out Where to write the XML data.
 *
 * @see #writeListXml(List, String, XmlSerializer)
 * @see #writeMapXml
 * @see #writeValueXml
 * @see #readListXml
 */
public static final void writeListXml(List val, OutputStream out)
        throws XmlPullParserException, java.io.IOException
{
    XmlSerializer serializer = Xml.newSerializer();
    serializer.setOutput(out, "utf-8");
    serializer.startDocument(null, true);
    serializer.setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true);
    writeListXml(val, null, serializer);
    serializer.endDocument();
}
 
源代码10 项目: MyBookshelf   文件: XmlUtils.java
/**
 * Flatten a Map into an output stream as XML.  The map can later be
 * read back with readMapXml().
 *
 * @param val The map to be flattened.
 * @param out Where to write the XML data.
 * @see #writeMapXml(Map, String, XmlSerializer)
 * @see #writeListXml
 * @see #writeValueXml
 * @see #readMapXml
 */
public static void writeMapXml(Map val, OutputStream out)
        throws XmlPullParserException, java.io.IOException {
    XmlSerializer serializer = new FastXmlSerializer();
    serializer.setOutput(out, "utf-8");
    serializer.startDocument(null, true);
    serializer.setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true);
    writeMapXml(val, null, serializer);
    serializer.endDocument();
}
 
源代码11 项目: JobSchedulerCompat   文件: XmlUtils.java
/**
 * Flatten a List into an output stream as XML.  The list can later be
 * read back with readListXml().
 *
 * @param val The list to be flattened.
 * @param out Where to write the XML data.
 *
 * @see #writeListXml(List, String, XmlSerializer)
 * @see #writeMapXml
 * @see #writeValueXml
 * @see #readListXml
 */
public static final void writeListXml(List val, OutputStream out)
throws XmlPullParserException, java.io.IOException
{
    XmlSerializer serializer = Xml.newSerializer();
    serializer.setOutput(out, "utf-8");
    serializer.startDocument(null, true);
    serializer.setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true);
    writeListXml(val, null, serializer);
    serializer.endDocument();
}
 
源代码12 项目: MyBookshelf   文件: XmlUtils.java
/**
 * Flatten a List into an output stream as XML.  The list can later be
 * read back with readListXml().
 *
 * @param val The list to be flattened.
 * @param out Where to write the XML data.
 * @see #writeListXml(List, String, XmlSerializer)
 * @see #writeMapXml
 * @see #writeValueXml
 * @see #readListXml
 */
public static void writeListXml(List val, OutputStream out)
        throws XmlPullParserException, java.io.IOException {
    XmlSerializer serializer = Xml.newSerializer();
    serializer.setOutput(out, "utf-8");
    serializer.startDocument(null, true);
    serializer.setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true);
    writeListXml(val, null, serializer);
    serializer.endDocument();
}
 
源代码13 项目: AcDisplay   文件: XmlUtils.java
/**
 * Flatten a List into an output stream as XML.  The list can later be
 * read back with readListXml().
 *
 * @param val The list to be flattened.
 * @param out Where to write the XML data.
 * @see #writeListXml(List, String, XmlSerializer)
 * @see #writeMapXml
 * @see #writeValueXml
 * @see #readListXml
 */
public static void writeListXml(List val, OutputStream out)
        throws XmlPullParserException, java.io.IOException {
    XmlSerializer serializer = Xml.newSerializer();
    serializer.setOutput(out, "utf-8");
    serializer.startDocument(null, true);
    serializer.setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true);
    writeListXml(val, null, serializer);
    serializer.endDocument();
}
 
源代码14 项目: Android-PreferencesManager   文件: XmlUtils.java
/**
 * Flatten a Map into an output stream as XML. The map can later be read
 * back with readMapXml().
 *
 * @param val The map to be flattened.
 * @param out Where to write the XML data.
 * @see #writeMapXml(Map, String, XmlSerializer)
 * @see #writeListXml
 * @see #writeValueXml
 * @see #readMapXml
 */
public static final void writeMapXml(Map val, OutputStream out) throws XmlPullParserException, java.io.IOException {
    XmlSerializer serializer = new FastXmlSerializer();
    serializer.setOutput(out, "utf-8");
    serializer.startDocument(null, true);
    serializer.setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true);
    writeMapXml(val, null, serializer);
    serializer.endDocument();
}
 
源代码15 项目: XPrivacy   文件: XmlUtils.java
/**
 * Flatten a Map into an output stream as XML.  The map can later be
 * read back with readMapXml().
 *
 * @param val The map to be flattened.
 * @param out Where to write the XML data.
 *
 * @see #writeMapXml(Map, String, XmlSerializer)
 * @see #writeListXml
 * @see #writeValueXml
 * @see #readMapXml
 */
public static final void writeMapXml(Map val, OutputStream out)
        throws XmlPullParserException, java.io.IOException {
    XmlSerializer serializer = new FastXmlSerializer();
    serializer.setOutput(out, "utf-8");
    serializer.startDocument(null, true);
    serializer.setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true);
    writeMapXml(val, null, serializer);
    serializer.endDocument();
}
 
源代码16 项目: PreferenceFragment   文件: XmlUtils.java
/**
 * Flatten a Map into an output stream as XML.  The map can later be
 * read back with readMapXml().
 *
 * @param val The map to be flattened.
 * @param out Where to write the XML data.
 *
 * @see #writeMapXml(Map, String, XmlSerializer)
 * @see #writeListXml
 * @see #writeValueXml
 * @see #readMapXml
 */
public static final void writeMapXml(Map val, OutputStream out)
        throws XmlPullParserException, java.io.IOException {
    XmlSerializer serializer = new FastXmlSerializer();
    serializer.setOutput(out, "utf-8");
    serializer.startDocument(null, true);
    serializer.setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true);
    writeMapXml(val, null, serializer);
    serializer.endDocument();
}
 
源代码17 项目: WeexOne   文件: XmlUtils.java
/**
 * Flatten a List into an output stream as XML.  The list can later be
 * read back with readListXml().
 *
 * @param val The list to be flattened.
 * @param out Where to write the XML data.
 *
 * @see #writeListXml(List, String, XmlSerializer)
 * @see #writeMapXml
 * @see #writeValueXml
 * @see #readListXml
 */
public static final void writeListXml(List val, OutputStream out)
    throws XmlPullParserException, java.io.IOException
{
    XmlSerializer serializer = Xml.newSerializer();
    serializer.setOutput(out, "utf-8");
    serializer.startDocument(null, true);
    serializer.setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true);
    writeListXml(val, null, serializer);
    serializer.endDocument();
}
 
源代码18 项目: WeexOne   文件: XmlUtils.java
/**
 * Flatten a Map into an output stream as XML.  The map can later be
 * read back with readMapXml().
 *
 * @param val The map to be flattened.
 * @param out Where to write the XML data.
 *
 * @see #writeMapXml(Map, String, XmlSerializer)
 * @see #writeListXml
 * @see #writeValueXml
 * @see #readMapXml
 */
public static final void writeMapXml(Map val, OutputStream out)
    throws XmlPullParserException, java.io.IOException {
    XmlSerializer serializer = new FastXmlSerializer();
    serializer.setOutput(out, "utf-8");
    serializer.startDocument(null, true);
    serializer.setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true);
    writeMapXml(val, null, serializer);
    serializer.endDocument();
}
 
源代码19 项目: JobSchedulerCompat   文件: XmlUtils.java
/**
 * Flatten a Map into an output stream as XML.  The map can later be
 * read back with readMapXml().
 *
 * @param val The map to be flattened.
 * @param out Where to write the XML data.
 *
 * @see #writeMapXml(Map, String, XmlSerializer)
 * @see #writeListXml
 * @see #writeValueXml
 * @see #readMapXml
 */
public static final void writeMapXml(Map val, OutputStream out)
        throws XmlPullParserException, java.io.IOException {
    XmlSerializer serializer = new FastXmlSerializer();
    serializer.setOutput(out, "utf-8");
    serializer.startDocument(null, true);
    serializer.setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true);
    writeMapXml(val, null, serializer);
    serializer.endDocument();
}
 
源代码20 项目: HeadsUp   文件: XmlUtils.java
/**
 * Flatten a Map into an output stream as XML.  The map can later be
 * read back with readMapXml().
 *
 * @param val The map to be flattened.
 * @param out Where to write the XML data.
 * @see #writeMapXml(Map, String, XmlSerializer)
 * @see #writeListXml
 * @see #writeValueXml
 * @see #readMapXml
 */
public static void writeMapXml(Map val, OutputStream out)
        throws XmlPullParserException, java.io.IOException {
    XmlSerializer serializer = new FastXmlSerializer();
    serializer.setOutput(out, "utf-8");
    serializer.startDocument(null, true);
    serializer.setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true);
    writeMapXml(val, null, serializer);
    serializer.endDocument();
}