<Carts>
<Message id="6a056d12b224797f427d9dbf19c1b7d1">
<CPReq id="CPReq">
<version>1.0.1</version>
<date>20080722 09:32:13</date>
<instId>ALIPAY</instId>
<certId>ALIPAY2007072400</certId>
<serialNo>2200807220000224599</serialNo>
<signNo>10100530000027768E8B2079CC54CC55AD23FF372D0F5</signNo>
<charge>0</charge>
<amount>102</amount>
<currency>156</currency>
</CPReq>
      </Message>
</Carts>

解决方案 »

  1.   

    仅供参考c# code:        #region 操作XML的方法F2CreateXML、F2LoadXML、F2CreateAttr、F2CreateNode        /// <summary>
            /// 创建System.Xml.XmlDocument
            /// </summary>
            /// <param name="xmlFileName">XML文件名称</param>
            /// <returns></returns>
            public XmlDocument F2CreateXML(string xmlFileName)
            {
                XmlDocument xmlDoc = new XmlDocument();
                XmlNode xmlNode;            //加入XML的声明段落
                xmlNode = xmlDoc.CreateNode(XmlNodeType.XmlDeclaration, "", "");
                xmlNode.InnerText += " encoding=\"GB2312\"";            xmlDoc.AppendChild(xmlNode);            //加入根元素IP
                xmlNode = xmlDoc.CreateElement("", "IP", "");
                //加入IP属性
                XmlAttribute ipName = xmlDoc.CreateAttribute("IP");
                ipName.Value = F2GetIp();
                xmlNode.Attributes.Append(ipName);
                //加入MAC属性
                XmlAttribute macName = xmlDoc.CreateAttribute("MAC");
                macName.Value = F2GetMac();
                xmlNode.Attributes.Append(macName);
                
                xmlDoc.AppendChild(xmlNode);            //保存创建好的XML文档
                xmlDoc.Save(xmlFileName);            return xmlDoc;
            }        /// <summary>
            /// 调用System.Xml.XmlDocument
            /// </summary>
            /// <param name="xmlFileName">XML文件名称</param>
            /// <returns></returns>
            public XmlDocument F2LoadXML(string xmlFileName)
            {
                if (File.Exists(xmlFileName))
                {
                    XmlDocument xmlDoc = new XmlDocument();
                    xmlDoc.Load(xmlFileName);                return xmlDoc;
                }
                else
                {
                    return F2CreateXML(xmlFileName);
                }
            }        /// <summary>
            /// 创建System.Xml.XmlAttribute
            /// </summary>
            /// <param name="xmlDoc">要修改的XmlDocument文件</param>
            /// <param name="xmlNode">要修改的节点</param>
            /// <param name="attrName">XmlAttribute的名称</param>
            /// <param name="attrValue">XmlAttribute的值</param>
            /// <returns>XmlAttribute</returns>
            public XmlAttribute F2CreateAttr(XmlDocument xmlDoc, XmlNode xmlNode, string attrName, string attrValue)
            {
                XmlAttribute xmlAttr = xmlDoc.CreateAttribute(attrName);
                xmlAttr.Value = attrValue;            xmlNode.Attributes.Append(xmlAttr);            return xmlAttr;
            }        /// <summary>
            /// 创建System.Xml.XmlNode
            /// </summary>
            /// <param name="xmlDoc">XmlDocument文档</param>
            /// <param name="xmlAttrName">属性名称数组</param>
            /// <param name="xmlAttrValue">属性值数组</param>
            /// <returns>XmlNode</returns>
            public XmlNode F2CreateNode(XmlDocument xmlDoc, String[] xmlAttrName, string[] xmlAttrValue)
            {
                XmlNode aNode = xmlDoc.CreateElement("ERROR");
                XmlAttribute[] aValue = new XmlAttribute[xmlAttrValue.Length];
                for (int i = 0; i < xmlAttrName.Length; i++)
                {
                    aValue[i] = xmlDoc.CreateAttribute(xmlAttrName[i]);
                    aValue[i].Value = xmlAttrValue[i];                aNode.Attributes.Append(aValue[i]);            }
                xmlDoc.FirstChild.NextSibling.AppendChild(aNode);            return aNode;
            }
            #endregion
      

  2.   

    string _Temp = "<Carts>";
                _Temp += "<Message id=\"6a056d12b224797f427d9dbf19c1b7d1\">";
                _Temp += "<CPReq id=\"CPReq\">";
                _Temp += "<version>1.0.1 </version>";
                _Temp += "<date>20080722 09:32:13 </date>";
                _Temp += "<instId>ALIPAY </instId>";
                _Temp += "<certId>ALIPAY2007072400 </certId>";
                _Temp += "<serialNo>2200807220000224599 </serialNo>";
                _Temp += "<signNo>10100530000027768E8B2079CC54CC55AD23FF372D0F5 </signNo>";
                _Temp += "<charge>0 </charge>";
                _Temp += "<amount>102 </amount>";
                _Temp += "<currency>156 </currency>";
                _Temp += "</CPReq>";
                _Temp += "</Message>";
                _Temp += "</Carts>";
                System.Xml.XmlDocument _Xml = new System.Xml.XmlDocument();
                _Xml.LoadXml(_Temp);                   MessageBox.Show(_Xml["Carts"]["Message"].Attributes[0].Value);直接就可以打开
      

  3.   

    还有一个问题,
    我项目中涉及的报文(XML)格式有20-30个,每个都不同。
    我总不能写死格式,以后不改吧。所以怎么定义这些格式(DTD吗),然后以DTD为模板写入数据,变成XML文件或XMLDocutment?