私は XmlDocument の使用機能のおかげで大ファンでしたが、最近、そのクラスで大きなメモリの問題が発生したため、XmlReader と XmlWriter を使い始めました。
XmlReader は、Xml ファイルを順番に読み取るため、Xml ファイルが複雑な場合に使用するのが少し難しい場合があります。その場合、XmlReader のメソッド ReadSubTree は非常に便利です。このメソッドは現在のノードの下の xml ツリーのみを返すため、新しい xmlreader を関数に送信してサブノードのコンテンツを解析し、それが完了したら、次の処理に進みます。ノード。
XmlReader の例:
string xmlcontent = "<BigXml/>";
using(StringReader strContent = new StringReader(xmlcontent))
{
using (XmlReader reader = XmlReader.Create(strContent))
{
while (reader.Read())
{
if (reader.Name == "SomeName" && reader.NodeType == XmlNodeType.Element)
{
//Send the XmlReader created by ReadSubTree to a function to read it.
ReadSubContentOfSomeName(reader.ReadSubtree());
}
}
}
}
XmlWriter の例:
StringBuilder builder = new StringBuilder();
using (XmlWriter writer = XmlWriter.Create(builder))
{
writer.WriteStartDocument();
writer.WriteStartElement("BigXml");
writer.WriteAttributeString("someAttribute", "42");
writer.WriteString("Some Inner Text");
//Write nodes under BigXml
writer.WriteStartElement("SomeName");
writer.WriteEndElement();
writer.WriteEndElement();
writer.WriteEndDocument();
}