일부 노드가없는 큰 xml을 다시 작성하고 싶습니다. system.xml.xmlreader를 사용하여 한 줄씩 XML 파일 (100s의 MB를 읽을 수없고 메모리에 모두 읽을 수 없음)을 읽으려고합니다. 일부를 읽는 방법을 찾기 위해 고심하고 xDocument를 분리하고 해당 xDocument를 디스크에 저장하십시오.대용량 XML 파일 다시 작성 - 특정 노드 제외
내가 뭘 생각하고 봤는데 뭔가 같은 :
using (XmlReader reader = XmlReader.Create(_xml_path))
{
using (XmlWriter writer = XmlWriter.Create(@"filteredxml.xml"))
{
reader.MoveToContent();
while (reader.Read())
{
if (reader.NodeType == XmlNodeType.Element)
{
if (reader.Name != "EL_TO_BE_REMOVED")
{
//writer.WriteNode(reader.ReadOuterXml());
}
}
}
}
}
하지만 reader.ReadOuterXml()는 단순히 첫 번째 요소로 이동하고 제가 원하는 요소를 필터링 말도없이, 파일에 모든 자손을 기록 무시한다.
은 다음 포스팅에서 내 대답을 참조하십시오 http://stackoverflow.com/questions/34274568/how-to-read-an-xml-file-by-using-xmlreader-in-c-sharp – jdweng