WbxmlPrimitiveSerializer.java
上传用户:szyujian
上传日期:2016-09-20
资源大小:320k
文件大小:2k
源码类别:

android开发

开发平台:

C/C++

  1. /*
  2.  * Copyright (C) 2007 Esmertec AG.
  3.  * Copyright (C) 2007 The Android Open Source Project
  4.  *
  5.  * Licensed under the Apache License, Version 2.0 (the "License");
  6.  * you may not use this file except in compliance with the License.
  7.  * You may obtain a copy of the License at
  8.  *
  9.  *      http://www.apache.org/licenses/LICENSE-2.0
  10.  *
  11.  * Unless required by applicable law or agreed to in writing, software
  12.  * distributed under the License is distributed on an "AS IS" BASIS,
  13.  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14.  * See the License for the specific language governing permissions and
  15.  * limitations under the License.
  16.  */
  17. package com.android.im.imps;
  18. import java.io.IOException;
  19. import java.io.OutputStream;
  20. import java.util.Map;
  21. import com.android.im.imps.ImpsConstants.ImpsVersion;
  22. public class WbxmlPrimitiveSerializer implements PrimitiveSerializer {
  23.     private String mVersionNs;
  24.     private String mTransacNs;
  25.     public WbxmlPrimitiveSerializer(ImpsVersion impsVersion, String versionNs,
  26.             String transacNs) {
  27.         mVersionNs = versionNs;
  28.         mTransacNs = transacNs;
  29.         mWbxmlSerializer = new WbxmlSerializer(impsVersion);
  30.     }
  31.     private WbxmlSerializer mWbxmlSerializer;
  32.     public void serialize(Primitive primitive, OutputStream out) throws IOException,
  33.             SerializerException {
  34.         mWbxmlSerializer.reset();
  35.         mWbxmlSerializer.setOutput(out);
  36.         PrimitiveElement elem = primitive.createMessage(mVersionNs, mTransacNs);
  37.         writeElement(elem);
  38.     }
  39.     private void writeElement(PrimitiveElement element) throws IOException,
  40.             SerializerException {
  41.         String name = element.getTagName();
  42.         String[] atts = null;
  43.         Map<String, String> attrMap = element.getAttributes();
  44.         if(attrMap != null && attrMap.size() > 0) {
  45.             atts = new String[attrMap.size() * 2];
  46.             int index = 0;
  47.             for (Map.Entry<String, String> entry : attrMap.entrySet()) {
  48.                 atts[index++] = entry.getKey();
  49.                 atts[index++] = entry.getValue();
  50.             }
  51.         }
  52.         mWbxmlSerializer.startElement(name, atts);
  53.         String contents = element.getContents();
  54.         if(contents != null) {
  55.             mWbxmlSerializer.characters(contents);
  56.         }
  57.         if(element.getChildCount() > 0) {
  58.             for(PrimitiveElement child : element.getChildren()) {
  59.                 writeElement(child);
  60.             }
  61.         }
  62.         mWbxmlSerializer.endElement();
  63.     }
  64. }