当我读取 xml 文件时,它会读取节点的副本
本文关键字:读取 节点 副本 xml 文件 | 更新日期: 2023-09-27 18:31:35
当我尝试读取我的xml文件时,它似乎读取了两次,我不确定如何解决此类错误。我以为我可以有某种循环,但我仍然迷路了。任何帮助将不胜感激。- 它正确写入 xml 文件,但在读取时出现重复。
String workingDir = Directory.GetCurrentDirectory();
XmlTextReader textReader = new XmlTextReader(workingDir + @"'xmldoc.xml");
Console.WriteLine("BaseURI:" + textReader.BaseURI);
textReader.Read();
while (textReader.Read())
{
if (textReader.Name == "test")
{
textReader.Read();
XmlNodeType nType = textReader.NodeType;
if (nType == XmlNodeType.Text)
{
// label.Text = textReader.Value.ToString();
Label l = new Label();
System.Drawing.Point l1 = new System.Drawing.Point(15, 13 + a);
l.Location = l1;
l.Text = textReader.Value.ToString();
a += 20;
}
是什么让你认为有些条目被读了两次?如果是这种情况,还要检查此方法是否未调用两次(在 Visual Studio 中按 shift + F12 查找用法)。另外,您在此处加入的代码似乎不完整(没有声明变量"a")。您是否在if (textReader.Name == "test")
下执行了一些可以执行相同操作的代码?
我不知道你真正想做什么,也没有XML的可见性,但这里是我大致会怎么做。
笔记:
- 我正在使用 XmlReader <- 更好的恕我直言(基类,所以华夫饼更少)
- 我正在使用"阅读器。值",不带 ToString(),因为它已经是一个字符串类型。
- 我将其更改为开关,因为我认为它们更干净,但是那里有很多XmlNodeType,您不希望必须/否则太多!!
法典:
XmlReader reader = XmlReader.Create("books.xml");
while (reader.Read())
{
switch (reader.NodeType)
{
case XmlNodeType.Element: // The node is an element.
//DO NOTHING
break;
case XmlNodeType.Text: //Display the text in each element.
//label.Text = reader.Value;
Label l = new Label();
System.Drawing.Point l1 = new System.Drawing.Point(15, 13 + a);
l.Location = l1;
l.Text = reader.Value;
a += 20;
break;
case XmlNodeType.EndElement: //Display the end of the element.
//DO NOTHING
break;
}
}