我需要读取一个XML 文件(大于 1 GB)并将数据加载到数据库中。如果我使用LINQ,阅读会比使用XmlReader
?
问问题
121 次
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 回答