从巨大的xml文件中获取数据而无需加载到内存中。c#
我有一个具有以下模式的xml从巨大的xml文件中获取数据而无需加载到内存中。c#,c#,memory-management,xml-parsing,C#,Memory Management,Xml Parsing,我有一个具有以下模式的xml <root> <Main1> . . . <Main1/> <Main2> <Main2ChildNode Id="1">Very Very Huge Base 64 String<Main2ChildNode> <Main2ChildNode Id="2">Very Very Huge Base 64 String<Main2ChildNo
<root>
<Main1>
.
.
.
<Main1/>
<Main2>
<Main2ChildNode Id="1">Very Very Huge Base 64 String<Main2ChildNode>
<Main2ChildNode Id="2">Very Very Huge Base 64 String<Main2ChildNode>
.
.
.
<Main2ChildNode Id="n">Very Very Huge Base 64 String<Main2ChildNode>
<Main2/>
</root>
请建议一个更好的解决方案。尝试使用基于事件的SAX,即在解析时触发事件,而不是一次读取整个文档。它有助于在分区中加载XML
private String GetImageData(String Main2ChildNodeId,String XmlFilePath)
{
string data=null;
using (XmlReader reader = XmlReader.Create(XmlFilePath))
{
reader.MoveToContent();
while (reader.Read() && data == null)
{
switch (reader.NodeType)
{
case XmlNodeType.Element:
if (reader.Name == "Main2ChildNode")
{
XElement el = XElement.ReadFrom(reader) as XElement;
if ((String)el.Attribute("Id") == Main2ChildNodeId)
{
data= el.Value;
}
}
break;
}
}
}
return data
}