XML 在 C# 中构建 Windows 或 ASP 应用程序
XML Building in C# Windows or ASP Application
我正在将大量 XML 参数从我的应用程序传递到 SQL 服务器(windows 和 ASP.Net 应用程序)
之前我曾经使用字符串中的基本连接运算符构建 XML,类似于下面的那个。
string XmlDetails = string.Empty;
XmlDetails = "<APPLICATION><SEND>";
XmlDetails += "<ID>" + txtCardNo.Text.ToString() + "</ID>";
XmlDetails += "</SEND></APPLICATION>";
该应用程序过去常常占用内存并且速度非常慢。我将连接方法更改为 String Builder class 以构建大 XML.
XmlDetails = string.Format("{0}<{1}>{2}</{1}>", "<APPLICATION><SEND>", "ID", txtCardNo.Text.ToString());
XmlDetails = string.Format("{0}<{1}>{2}</{1}>{3}", XmlDetails, "PAYDET", txtPOSPaydet.Text.ToString(), "</SEND></APPLICATION>");
在使用上述方法时,我的应用程序使用的内存级别发生了巨大变化。
我想知道是否有更好的方法可用于我的应用程序。
为什么不使用 XDocument class。
var doc = new XDocument(
new XElement("APPLICATION",
new XElement("SEND",
new XElement("ID", txtCardNo.Text.ToString())
)
)
);
您有多种选择:
XElement,它允许您手工制作 XML,而无需自己构建字符串,而是像这样:
XElement xmlTree1 = new XElement("Root",
new XElement("Child1", 1),
new XElement("Child2", 2),
new XElement("Child3", 3)
);
Console.WriteLine(xmlTree2);
这将写入控制台:
<Root>
<Child1>1</Child1>
<Child2>2</Child2>
<Child3>3</Child3>
</Root>
如果您的 XML 格式是静态的,您还可以创建一个表示您的数据的对象,将其标记为 [Serializable]
,然后将其序列化:
public static void Main(string[] args)
{
var myObjectToSerialize = new Root()
{
Child1 = 1,
Child2 = 2,
Child3 = 3
};
var serializer = new XmlSerializer(typeof(Root));
serializer.Serialize(Console.Out, myObjectToSerialize);
Console.ReadKey();
}
与以下 class:
[Serializable]
public class Root
{
public int Child1 { get; set; }
public int Child2 { get; set; }
public int Child3 { get; set; }
}
我正在将大量 XML 参数从我的应用程序传递到 SQL 服务器(windows 和 ASP.Net 应用程序)
之前我曾经使用字符串中的基本连接运算符构建 XML,类似于下面的那个。
string XmlDetails = string.Empty;
XmlDetails = "<APPLICATION><SEND>";
XmlDetails += "<ID>" + txtCardNo.Text.ToString() + "</ID>";
XmlDetails += "</SEND></APPLICATION>";
该应用程序过去常常占用内存并且速度非常慢。我将连接方法更改为 String Builder class 以构建大 XML.
XmlDetails = string.Format("{0}<{1}>{2}</{1}>", "<APPLICATION><SEND>", "ID", txtCardNo.Text.ToString());
XmlDetails = string.Format("{0}<{1}>{2}</{1}>{3}", XmlDetails, "PAYDET", txtPOSPaydet.Text.ToString(), "</SEND></APPLICATION>");
在使用上述方法时,我的应用程序使用的内存级别发生了巨大变化。
我想知道是否有更好的方法可用于我的应用程序。
为什么不使用 XDocument class。
var doc = new XDocument(
new XElement("APPLICATION",
new XElement("SEND",
new XElement("ID", txtCardNo.Text.ToString())
)
)
);
您有多种选择:
XElement,它允许您手工制作 XML,而无需自己构建字符串,而是像这样:
XElement xmlTree1 = new XElement("Root",
new XElement("Child1", 1),
new XElement("Child2", 2),
new XElement("Child3", 3)
);
Console.WriteLine(xmlTree2);
这将写入控制台:
<Root>
<Child1>1</Child1>
<Child2>2</Child2>
<Child3>3</Child3>
</Root>
如果您的 XML 格式是静态的,您还可以创建一个表示您的数据的对象,将其标记为 [Serializable]
,然后将其序列化:
public static void Main(string[] args)
{
var myObjectToSerialize = new Root()
{
Child1 = 1,
Child2 = 2,
Child3 = 3
};
var serializer = new XmlSerializer(typeof(Root));
serializer.Serialize(Console.Out, myObjectToSerialize);
Console.ReadKey();
}
与以下 class:
[Serializable]
public class Root
{
public int Child1 { get; set; }
public int Child2 { get; set; }
public int Child3 { get; set; }
}