《魔乐Windows Mobile UIM联系人备份XML文件转换为魔乐android版UIM联系人备份XML文件》

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Windows.Forms;

namespace TransformXML
{
    class Program
    {
        private static Dictionary<String, String> contacts = new Dictionary<string, string>();
        [STAThreadAttribute]
        static void Main(string[] args)
        {
            XmlDocument xmlDoc = new XmlDocument();
            XmlNode root = null;
            string fileName = string.Empty;
            try
            {
                using (OpenFileDialog dialog = new OpenFileDialog())
                {
                    dialog.AddExtension = false;
                    dialog.AutoUpgradeEnabled = true;
                    dialog.CheckFileExists = false;
                    dialog.CheckPathExists = false;
                    dialog.DefaultExt = "xml";
                    dialog.DereferenceLinks = true;
                    dialog.Filter = "xml文件(*.xml)|*.xml|所有文件(*.*)|*.*";
                    dialog.FilterIndex = 0;
                    dialog.InitialDirectory = System.Environment.SpecialFolder.MyDocuments.ToString();
                    dialog.Multiselect = false;
                    dialog.RestoreDirectory = true;
                    dialog.ShowHelp = false;
                    dialog.SupportMultiDottedExtensions = true;
                    dialog.Title = "打开魔乐管理软件(Windows Mobile)UIM联系人备份XML文件";
                    if (dialog.ShowDialog() == DialogResult.OK)
                    {
                        fileName = dialog.FileName;
                    }
                }
                if (fileName == null || fileName.Length <= 0)
                {
                    return;
                }
                xmlDoc.Load(fileName);//从指定的文件(包含路径)加载XML文件
                //xmlDoc.LoadXml("<?xml version="1.0" encoding="UTF-8"?><root></root>");//从XML字符串加载XML文件
                root = xmlDoc.SelectSingleNode("Contacts");
            }
            catch (System.Xml.XmlException ex)
            {
                Console.WriteLine(ex.Message);
            }
            catch (System.Xml.XPath.XPathException ex)
            {
                Console.WriteLine(ex.Message);
            }

            if (root != null)
            {
                XmlNodeList nodeList = root.ChildNodes;
                if (nodeList != null)
                {
                    XmlElement element = null;
                    foreach (XmlNode node in nodeList)
                    {
                        element = (XmlElement)node;
                        if (element != null)
                        {
                            if (element.HasChildNodes)
                            {
                                string name = string.Empty;
                                string mobile = string.Empty;
                                foreach (XmlNode childNode in element.ChildNodes)
                                {
                                    element = (XmlElement)childNode;
                                    if (element.Name.Equals("FirstName") && element.InnerText != null)
                                    {
                                        name = element.InnerText;//获取姓名
                                    }
                                    else if (element.Name.Equals("Mobile") && element.InnerText != null)
                                    {
                                        mobile = element.InnerText;//获取电话号码                                      
                                    }
                                }
                                contacts.Add(name, mobile);
                            }
                        }
                    }
                }
            }

            transformXmlDocument();
        }
        private static void transformXmlDocument()
        {
            string fileName = string.Empty;
            using (SaveFileDialog dialog = new SaveFileDialog())
            {
                dialog.AddExtension = true;
                dialog.AutoUpgradeEnabled = true;
                dialog.Title = "存储为魔乐管理软件(Android)UIM联系人备份XML文件";
                dialog.DefaultExt = "xml";
                dialog.Filter = "xml文件(*.xml)|*.xml|所有文件(*.*)|*.*";
                dialog.FilterIndex = 0;
                dialog.InitialDirectory = System.Environment.SpecialFolder.MyDocuments.ToString();
                dialog.OverwritePrompt = true;
                dialog.RestoreDirectory = true;
                dialog.ShowHelp = false;
                if (dialog.ShowDialog() == DialogResult.OK)
                {
                    fileName = dialog.FileName;
                }
            }

            if (fileName == null || fileName.Length <= 0)
            {
                return;
            }

            using (XmlTextWriter writer = new XmlTextWriter(fileName, System.Text.Encoding.UTF8))
            {
                writer.Formatting = Formatting.Indented;
                writer.WriteStartDocument(true);//写入XML文件注释
                writer.WriteStartElement("Contacts");//建立根节点元素
                foreach (String key in contacts.Keys)
                {
                    writer.WriteStartElement("Contact");//建立第一节点元素
                    writer.WriteStartElement("Name");//建立子节点元素
                    writer.WriteString(key);
                    writer.WriteEndElement();

                    writer.WriteStartElement("Starred");//建立子节点元素
                    writer.WriteString("0");
                    writer.WriteEndElement();

                    writer.WriteStartElement("PhoneList");
                    writer.WriteStartElement("Phone");
                    writer.WriteStartAttribute("Type");
                    writer.WriteString("2");//实现"Type=2"的属性设定
                    writer.WriteEndAttribute();
                    writer.WriteString(contacts[key]);
                    writer.WriteEndElement();
                    writer.WriteEndElement();
                    writer.WriteEndElement();//第一节点结束
                }
                writer.WriteEndElement();//根节点结束
                writer.WriteEndDocument();//XML文档结束
                writer.Flush();
                writer.Close();
            }
        }
    }
}

  

posted on 2012-01-31 14:56  谁家的猫啊  阅读(485)  评论(0编辑  收藏  举报

导航