抱歉我的英语不好。
我必须使用XmlReader读取xml文件。 我像这样使用XmlReader:
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来忽略Comments,ProcessingInstructions和WhiteSpace 但我的读者仍然在(1)中读取XmlNodeType而不是XmlNodeType.Element。
有没有办法忽略除XmlNodeType.Element之外的所有XmlNodeType?
谢谢。
答案 0 :(得分:0)
忽略您可以使用此代码的空格
_reader.WhitespaceHandling = WhitespaceHandling.None;
然后你需要每个案例例如switch语句
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;
很快就其他案例