忽略除XmlNodeType.Element之外的所有内容
本文关键字:XmlNodeType Element | 更新日期: 2024-09-24 00:28:53
我必须使用XmlReader
读取XML文件。我是这样使用的:
XmlReaderSettings settings = new XmlReaderSettings();
settings.IgnoreComments = true;
settings.IgnoreProcessingInstructions = true;
settings.IgnoreWhitespace = true;
XmlReader reader = XmlReader.Create(file, settings);
while (reader.Read())
{
if (reader.IsStartElement())
{
switch (reader.Name)
{
case "NBBOOKS"
{
reader.Read();
nbBooks = int.Parse(reader.Value);
break;
}
case "BOOKS":
{
tempReader = reader.ReadSubtree();
while(tempReader.ReadToFollowing("BOOK"))
{
tempReader.ReadToFollowing("TITLE");
tempReader.Read();
// save title
tempReader.ReadToFollowing("SYNOPSIS");
tempReader.Read();
// save synopsis
}
tempReader.Close();
break;
}
}
}
}
我想加快我的申请速度。因此,我使用XmlReaderSettings
来忽略注释、处理指令和空白。但我的读者仍然阅读XmlNodeType
,而不是(1)中的XmlNodeType.Element
。
有没有办法忽略除XmlNodeType.Element
之外的所有XmlNodeType
?
忽略空白可以使用此代码
_reader.WhitespaceHandling = WhitespaceHandling.None;
然后你需要为每种情况,例如切换语句
while (reader.Read()) {
switch (reader.NodeType) {
case XmlNodeType.Element:
Console.Write("<{0}>", reader.Name);
break;
case XmlNodeType.ProcessingInstruction:
Console.Write("<?{0} {1}?>", reader.Name, reader.Value);
break;
并且很快在其余情况下