【问题标题】:Reading from XML error [closed]从 XML 错误中读取 [关闭]
【发布时间】:2013-03-13 15:08:25
【问题描述】:

我可能有一个简单的问题要问你,但我坚持这个。

所以,我有一个应用程序,它有多个用户控件,从一个类继承。我可以将它们拖到面板上,然后调整它们的大小。我有保存和打开用户控件位置/大小保存/从 XML 文件加载的功能。最近我用一个特性改进了它,它可以让你在代码中添加额外的东西,然后用其余的主要参数保存它。

这是一个例子: 基本上它会检测是否添加了任何其他参数并将它们保存在<Parameters> 标签下。

这是我添加了一些东西的 userControl 代码示例:

保存很顺利,但我在加载部分卡住了。我首先尝试通过将任何发现的参数写入richTextBox 来测试它,看看它是否读取任何数据。 我想,它应该首先检测 userControls,然后在每个 userControl 中查找参数。

我收到此错误:

如下所示,程序读取 XML,但在需要填充richTextBox 的位置停止。它不会发生,因为在应该包含两个参数的列表中,只有一个参数,一种混合​​。

我很困惑。有什么建议吗?


培训中的开发者

【问题讨论】:

  • 使用调试器查看哪个对象为空;它是以下之一:richTextBox1、pm、pm.Name 或 pm.Value。
  • here也许对你有帮助。
  • 您可以发布实际代码而不是屏幕截图.. 当您进入代码时,pm 的价值是什么?您需要到达InnerText,所以也许 pm.Name.ToString() 应该更改为 pm.Name.InnerText.ToString()
  • 我已经修复了,是的,内部文本,我忘了添加:P
  • 我想发布一个答案,但它被关闭了。将XmlNodeList pmList = doc.SelectNodes("/root/UC/Parameters"); 更改为XmlNodeList pmList = xn.SelectNodes("Parameters/*"); 并将pm.Name + " - " + pm.Value 更改为pm.Name + " - " + pm.InnerText

标签: c# xml user-controls xmlnode


【解决方案1】:

哇,我好懒:D

我忘了转换参数的内部文本:P

foreach (XmlNode pm in pmList)
                {
                    int s = int.Parse(pm["RandomParameter1"].InnerText);
                    int ss = int.Parse(pm["RandomParameter2"].InnerText);

                    richTextBox1.AppendText(pm["RandomParameter1"].ToString() + " - " + s.ToString() + "\n");
                    richTextBox1.AppendText(pm["RandomParameter1"].ToString() + " - " + ss.ToString() + "\n");

                }

仍然需要处理参数名称输出,因为我在文本框上得到的结果是:

System.Xml.XmlElement - 27
System.Xml.XmlElement - 10
System.Xml.XmlElement - 27
System.Xml.XmlElement - 10
System.Xml.XmlElement - 27
System.Xml.XmlElement - 10

Buuut,这是一个开始,不是吗? :D


感谢任何抽出时间尝试解决我的懒惰错误的人:)

【讨论】:

  • 你得到了重复,因为你每次都从文档的根目录获取ParameterXmlNodeList (XmlNodeList pmList = doc.SelectNodes("/root/UC/Parameters");)。请参阅我的评论以修复它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-13
  • 2023-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多