-2

我需要读取一个XML 文件(大于 1 GB)并将数据加载到数据库中。如果我使用LINQ,阅读会比使用XmlReader?

4

2 回答 2

2

XDocument(LINQ to XML) 并且XmlDocument适用于较小的文件,它们是所谓的 DOM 解析器。这样做的原因是他们将完整的文档加载到内存中并对其进行解析。

XmlReader是一个SAX 解析器,适用于大文件,因为只读取小块,并且在读取时检查格式是否正确。

哪些文件算作“小”和“大”实际上取决于某些因素,例如机器中安装的内存。

一般来说,对于任何大小合适的 XML 文件,XmlReader就原始执行时间而言,它应该是最快的解决方案,但它也是迄今为止最难实现和理解的 API。特别是对于使用此 API 的新手,实施时间明显高于使用其他 API。

于 2013-02-04T11:17:24.960 回答
0
    public void validateIputXML(string inputXmlPath)
    {

        XmlDocument document = new XmlDocument();
        document.Load(inputXmlPath);
        XmlNodeList recipientItem = document.GetElementsByTagName("RECIPIENT");
        foreach (XmlNode childList in recipientItem)
        {
            string attibuteValue_TemplateID = getValue(childList,".//LETTER_HEADER/TEMPLATE_ID");
            string attibuteValue_ProviderName = getValue(childList,".//LETTER_BODY/PROVIDER_INFO/PROVIDER_NAME");
            string attibuteValue_ProviderAddress = getValue(childList,".//LETTER_BODY/PROVIDER_INFO/PROVIDER_ADDRESS1");
            string attibuteValue_ProviderNumber = getValue(childList,".//LETTER_BODY/PROVIDER_INFO/PROVIDERNPI");

            Report.Info(attibuteValue_TemplateID+"-->"+attibuteValue_ProviderName+"-->"+attibuteValue_ProviderAddress+"-->"+attibuteValue_ProviderNumber);
        }
    }


    public string getValue(XmlNode Xnode, string attributeName)
    {
        XmlNode innerNode = Xnode.SelectSingleNode(attributeName);
        string attributeValue = innerNode.InnerText;
        return attributeValue;
    }
于 2017-11-21T19:38:54.133 回答