【发布时间】:2011-02-03 16:57:32
【问题描述】:
我有一个方法,它使用XMLReader(同时验证)循环通过XML 文档提取特定的信息。我还需要压缩整个 XML 文档,以准备将其存储在数据库中。我必须这样做的代码如下。 这是(将整个XmlReader 传递给StreamWriter.Write())实现此目的的适当/最有效方法?我没有看到使用@ 的明确方法987654324@循环达到同样的效果。
XmlSchemaSet schemaSet = new XmlSchemaSet();
schemaSet.Add("schemaNamespace", "schemaLocation");
XmlReaderSettings readerSettings = new XmlReaderSettings();
readerSettings.ValidationType = ValidationType.Schema;
readerSettings.Schemas.Add(schemaSet);
readerSettings.ValidationEventHandler
+= new ValidationEventHandler(XMLValidationError);
using (XmlReader documentReader = requestXML.CreateNavigator().ReadSubtree())
{
using (XmlReader validatingReader =
XmlReader.Create(documentReader, readerSettings))
{
using (MemoryStream output = new MemoryStream())
{
using (DeflateStream gzip =
new DeflateStream(output, CompressionMode.Compress))
{
using (StreamWriter writer =
new StreamWriter(gzip, System.Text.Encoding.UTF8))
{
writer.Write(validatingReader);
this.compressedXMLRequest
= Encoding.UTF8.GetString(output.ToArray());
}
}
}
while (validatingReader.Read())
{
// extract specific element contents
}
}
}
【问题讨论】:
标签: c# xml compression xmlreader