【问题标题】:Load xml and get xml node value加载xml并获取xml节点值
【发布时间】:2014-02-12 08:45:48
【问题描述】:

您好,我的 Windows 窗体应用程序中有一个 xml。我想得到一个节点值。这是非常基本的,有很多方法可以得到它,但我知道我的 xml 甚至没有加载。当我调试时,在这一行之后

xml.LoadXml(xmlPath);

程序根本拒绝进入下一行。这是我的完整代码。

XmlDocument xml = new XmlDocument();
string xmlPath = "settings.xml";
xml.LoadXml(xmlPath);
txtPass.Text = xml.SelectSingleNode("settings/user-settings/pass").InnerText.ToString();

编辑:我也试过 xml.Load() 但我有同样的问题。

【问题讨论】:

  • 那么当您调试时,您使用 f10 或 f11 进行下一行,对吗?它根本不会进入下一行。它会将申请表触发到屏幕。
  • 可能文件正被其他程序独占使用?
  • 不,我没有检查。
  • 将该示例复制并粘贴到其他项目(控制台应用程序)中并检查它是否正常运行。
  • 当它“没有转到下一行”时,它会抛出异常并默认为 UI 线程,这就是显示表单的原因。如果您将加载 xml 行放在 try/catch 块中,您会看到它抛出异常。

标签: c# xml xmlnode


【解决方案1】:

那是因为LoadXml 不是用来加载文件而是用来加载 XML 内容的。

Source

【讨论】:

  • @MCanSener 这可能是出于不同的原因(很可能找不到文件)
  • 好吧,最后它应该触发一个异常或转到下一行,不是吗?
【解决方案2】:

Xml 文件名为“CompSpecs”

{
                        string path = @"";
                        FileStream READER = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); //Set up the filestream (READER) //
                        System.Xml.XmlDocument CompSpecs = new System.Xml.XmlDocument();// Set up the XmlDocument (CompSpecs) //
                        CompSpecs.Load(READER); //Load the data from the file into the XmlDocument (CompSpecs) //
                        System.Xml.XmlNodeList NodeList = CompSpecs.GetElementsByTagName("CompSpecs"); 
                        textBox1.Text = NodeList[0].FirstChild.NextSibling.ChildNodes[0].InnerText; 
}

我的 XML 文件是

<?xml version="1.0" ?> 
- <CompSpecs>
- <CP>
  <Type>intel Hp Core2DU</Type> 
  <RAM>4GBszz</RAM> 
  <CPU_Speed>3.8Ghz</CPU_Speed> 
  </CP>
- <CP>
  <Type>intel dell</Type> 
  <RAM>4GB</RAM> 
  <CPU_Speed>3.8Ghz</CPU_Speed> 
  </CP>
  </CompSpecs>

【讨论】:

    猜你喜欢
    • 2013-03-19
    • 1970-01-01
    • 2016-10-09
    • 2013-08-12
    • 2014-05-04
    • 1970-01-01
    • 1970-01-01
    • 2012-07-05
    • 1970-01-01
    相关资源
    最近更新 更多