我有以下功能:

public static XmlNode GetXMLNodeFromString(string strXML)
{
    XmlDocument doc = new XmlDocument();
    doc.LoadXml(strXML);
    return doc.DocumentElement;
}

在从数据库调用返回的代码行中可以调用一百万次:
while (reader.Read())
{
    myXMLList.Add(GetXMLNodeFromString((string)reader["GMLString"]));
}

有没有比继续为每一行实例化xmldocument更好的方法?或者这样做可以吗?
我不想这样:
XmlDocument doc = new XmlDocument();
while (reader.Read())
{
    myXMLList.Add(doc, GetXMLNodeFromString((string)reader["GMLString"]));
}

因为在所有的现实中,都有一个函数树,我必须将它添加到其中。不仅仅是getxmlnodefromstring。
我可以这样做吗:
public static class Common
{
    public static XmlDocument doc = new XmlDocument();
    public static XmlNode GetXMLNodeFromString(string strXML)
    {
        doc.LoadXml(strXML);
        return doc.DocumentElement;
    }
}

我该怎么办?

最佳答案

如果您遇到性能问题,我建议您XmlReader,因为它允许您在xml传入时对其进行解析,而不是预先解析它并创建一个内存中的对象模型,无论如何您都必须重新进行解析。但是,它可能需要重新构造代码一点,因为它为您提供了顺序(而不是随机)访问。如果你不需要随机访问,这是一个不错的选择。

关于c# - 实例化XmlDocument是否昂贵?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7587958/

10-10 05:04