使用LINQ读取C#XML
本文关键字:C#XML 读取 LINQ 使用 | 更新日期: 2023-09-27 17:57:45
我需要读取XML文件(大于1GB)并将数据加载到数据库中。如果我使用LINQ,读取速度会比使用XmlReader
更快吗?
XDocument
(LINQ to XML)和XmlDocument
用于较小的文件,它们是所谓的DOM解析器。原因是他们将完整的文档加载到内存中并对其进行解析
XmlReader
是一个SAX解析器,适用于大文件,因为只读取小块,并且在读取时检查格式是否正确。
哪些文件被视为"小"answers"大"实际上取决于某些因素,比如机器中安装的内存。
一般来说,对于任何大小适中的XML文件,XmlReader
应该是关于原始执行时间最快的解决方案,但它也是迄今为止最难实现和理解的API。特别是对于使用此API的新手来说,实现时间明显高于使用其他API。
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;
}