0

我将大量 XML 参数从我的应用程序传递到 SQL Server(Windows 和 ASP.Net 应用程序)

早些时候,我曾经使用基于字符串的连接运算符构建 XML,类似于下面的。

string XmlDetails = string.Empty;
XmlDetails = "<APPLICATION><SEND>";
XmlDetails += "<ID>" + txtCardNo.Text.ToString() + "</ID>";
XmlDetails += "</SEND></APPLICATION>";

该应用程序确实曾经占用内存并且非常慢。我将连接方法更改为 String Builder 类以构建大 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>");

使用上述方法时,我的应用程序使用的内存级别发生了巨大变化。

我想知道是否有更好的方法可以在我的应用程序中使用。

4

2 回答 2

1

有几个选项可供您使用:

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();
}

使用以下课程:

[Serializable]
public class Root
{
    public int Child1 { get; set; }

    public int Child2 { get; set; }

    public int Child3 { get; set; }
}
于 2015-03-11T09:08:12.860 回答
0

为什么不使用 XDocument 类。

var doc = new XDocument(
                    new XElement("APPLICATION",
                        new XElement("SEND",
                            new XElement("ID", txtCardNo.Text.ToString())
                            )
                        )
                    );
于 2015-03-11T09:06:22.357 回答