⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 syncsettingota.java

📁 本文档讲解了OTA的概念
💻 JAVA
字号:
/**
 * 
 */
package com.ultrapower.test;

import java.io.File;
import java.io.IOException;
import java.io.StringReader;
import java.util.Vector;

import org.kxml.Xml;
import org.kxml.parser.ParseEvent;
import org.kxml.parser.XmlParser;

import com.ultrapower.syncSettingsXML.SyncSettingWriter;
import com.ultrapower.syncSettingsXML.TokenFactory;
import com.ultrapower.syncSettingsXML.WBXMLToken;
import com.ultrapower.tools.IOTools;

/**
 * @author VictorZheng
 *
 */
public class SyncSettingOTA {

	private static Vector<SyncSettingWriter> vWriter = new Vector<SyncSettingWriter>();
	private static int MAX_OTA_SMS_LENGTH = 115;
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		try {
			File xmlDir = new File("C:\\opt\\xml\\syncsettings.xml");
			String xml = IOTools.readFileString(xmlDir);
			
			SyncSettingWriter writer = new SyncSettingWriter();
			vWriter.addElement(writer);
            XmlParser xmlp = new XmlParser(new StringReader(xml));
			// 遍历XML解析
            traverseXML(xmlp);
			
			/*
			 * 对于Vector中的每一个Writer都做关闭动作
			 */
			int nIndex = 0;
			for(SyncSettingWriter writerSync : vWriter)
			{
				nIndex++;
				writerSync.close(vWriter.size(), nIndex);
				System.out.println(encodeHex(writerSync.getBytes()));
			}
			
        } catch (IOException e) {
            
        } finally {
            
        }
	}

	// --------------------------------------------------------- Private methods    
    private static void traverseXML(XmlParser parser) throws IOException {

        boolean leave = false;
		TokenFactory token = TokenFactory.getInstance();
		
        do 
		{
            ParseEvent event = parser.read();

            switch (event.getType()) {
                case Xml.START_TAG:
                    
                    String name = event.getName();
					System.out.println(name);
					
					if(vWriter.lastElement().size() > MAX_OTA_SMS_LENGTH)
					{
						System.out.println("#Last Writer length="
								+ vWriter.lastElement().size()
								+ ",Now Another Writer!");
						// 重新建立另一个Writer,并插入Vector
						SyncSettingWriter writerNew = new SyncSettingWriter();
						vWriter.add(writerNew);
					}
					
					java.lang.Integer nToken = (java.lang.Integer)token.myPublicTokenMap.get(name);
										
					if(nToken != null)
					{
						vWriter.lastElement().writeBuffer(nToken);
					}
					
                    traverseXML(parser); // recursion
                    
                    break;

                case Xml.END_TAG:
                    
					// 写入XML元素的结束符
					vWriter.lastElement().writeBuffer(WBXMLToken.END);
					
                    leave = true;
                    break;

                case Xml.END_DOCUMENT:
					
					// 整个XML文档解析完毕
                    leave = true;
                    break;

                case Xml.TEXT:
										
					// 插入“Inline string follows”字节
					vWriter.lastElement().writeBuffer(WBXMLToken.STR_I);
					
					// 写入节点值
					vWriter.lastElement().writeBuffer(event.getText());
					
					// 写入字符串的结束符
					vWriter.lastElement().writeBuffer(WBXMLToken.END_INLINESTRING);
					
                    break;

                case Xml.WHITESPACE:
                    break;

                default:
            }
        } while (!leave);
    }	
	
	public static final String encodeHex (byte[] bytes) 
	{		
		StringBuffer buff = new StringBuffer(bytes.length * 2);
		String b;
		for (int i=0; i<bytes.length ; i++)
		{			
			b = Integer.toHexString(bytes[i]);
			 			
			// byte是两个字节的,而上面的Integer.toHexString会把字节扩展为4个字节
			// 如果byte是一个字节的,则前面加一个0前缀
			buff.append(b.length() > 2 ? b.substring(6,8) : ((b.length() > 1) ? b:"0" + b));
			 			
			//buff.append(" ");		
		}		
		return buff.toString();	
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -