У меня есть некоторые данные для хранения в XML файле. Легкая история! Чтобы сделать его нечитаемым, я его застегнул. Это должно работать нормально! Но я не могу прочитать содержимое xml!
Код, который я использовал для написания:
using( FileStream fileStream = new FileStream( filepath, FileMode.Create ) ) {
using( GZipStream zipStream = new GZipStream( fileStream , CompressionMode.Compress ) ) {
using( XmlWriter xmlWriter = XmlWriter.Create( zipStream, new XmlWriterSettings() {
Indent = true,
Encoding = Encoding.UTF8,
ConformanceLevel = ConformanceLevel.Fragment }
) ) {
xmlWriter.WriteString( xmlDocument.OuterXml );
}
}
}
Код, который я читаю до сих пор:
using( FileStream fileStream = new FileStream( filepath, FileMode.Open ) )
{
using( GZipStream zipStream = new GZipStream( fileStream , CompressionMode.Decompress ) )
{
using( XmlReader xmlReader = XmlReader.Create( zipStream, new XmlReaderSettings() { ConformanceLevel = ConformanceLevel.Fragment } ) )
{
xmlReader.MoveToContent();
XmlDocument xmlDocument = new XmlDocument();
xmlDocument.Load(xmlReader);
}
}
}
Но это работает не так, как ожидалось.
Файл xml выглядит довольно просто:
<data>
<name>bill</name>
<age>45</age>
</data>
<data>
<name>john</name>
<age>32</age>
</data>
<data>
<name>bill</name>
<age>68</age>
</data>
я бы хотел использовать
XmlNodeList xmlNodeList = xmlDocument.GetElementsByTagName( "data" );
Что мне не хватает? Спасибо за любые подсказки.
Внутри вашей логики чтения замените
xmlDocument.Load(xmlReader);
с
xmlDocument.LoadXml(xmlReader.ReadContentAsString());
Это сработало для меня