我是 XmlDocument 的忠实粉丝,因为它易于使用,但最近我遇到了该类的巨大内存问题,因此我开始使用 XmlReader 和 XmlWriter。
如果您的 Xml 文件很复杂,那么使用 XmlReader 可能会有点棘手,因为您是按顺序读取 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();
}