<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>
<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>
/// 创建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
_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);直接就可以打开
我项目中涉及的报文(XML)格式有20-30个,每个都不同。
我总不能写死格式,以后不改吧。所以怎么定义这些格式(DTD吗),然后以DTD为模板写入数据,变成XML文件或XMLDocutment?