【问题标题】:Need to get values from XML需要从 XML 中获取值
【发布时间】:2015-12-24 03:45:21
【问题描述】:

我需要从 XML 节点获取值,比如 XML 下面的示例。

<Names>
    <Name>
        <FirstName>John</FirstName>
        <LastName>Smith</LastName>
    </Name>
    <Name>
        <FirstName>James</FirstName>
        <LastName>White</LastName>
    </Name>
</Names>

我使用的代码如下。

XmlDocument xml = new XmlDocument();
xml.LoadXml(myXmlString); // suppose that myXmlString contains "<Names>...    </Names>"
XmlNodeList xnList = xml.SelectNodes("/Names/Name");
foreach (XmlNode xn in xnList)
{
  string firstName = xn["FirstName"].InnerText;
  string lastName = xn["LastName"].InnerText;
  Console.WriteLine("Name: {0} {1}", firstName, lastName);
}

这在单独的解决方案中运行良好。但是当我在我的一个应用程序中使用相同的代码作为一部分时,它不会检索值。 基本上,我的应用程序调用 WCF web servcie,retun 中的 web 服务发送字符串。我正在将该字符串转换为 XML 文档,并且当我将该文档作为 XML 文件写入服务器时,我能够看到整个 XML。但是当我尝试遍历并获取相同的节点时,它是不成功的。 我没有收到任何错误,但控件没有进入 foreach() 循环。这意味着 xnList.Count 为 0(零)。

过去 3 天我一直在努力解决这个问题。 谁能帮我解决这个问题。

提前谢谢大家!!!

【问题讨论】:

  • XmlDocument 是一种在 C# 中使用 XML 的老式方式。尽可能使用XDocument
  • 你试过调试吗?在第 3 行下一个断点,xml.OuterXml 的值是多少?如果它为空,那么您获取的字符串不正确。如果不是,请尝试将 xml.SelectNodes("/Names/Name") 添加到 Watches。如果它不为空,那么它可以工作。如果它是空的,那么尝试另一个 XPath,比如 * 并再次查看 XML - 肯定有问题。
  • XML 声明中必须有命名空间。这很可能是问题的原因。如果这样做,则需要将命名空间添加到 xpath 查询并使用 xml 命名空间管理器。
  • 我的猜测是您从服务器返回的 xml 与您的示例 xml 不同,可能包含命名空间等额外信息
  • 由于您的代码 sn-p 和 xml 在我的机器上工作,我将与其他人一起克服您输入的 xml 语法有问题。如果您仍然卡住,如果您希望将其用作参考,我可以在答案中发布我的内容。

标签: c# xml-parsing


【解决方案1】:

我猜这是c#。试试这个

XmlDocument xml = new XmlDocument();
xml.LoadXml(myXmlString);
XmlNodeList names = xml.GetElementsByTagName("Names");
for (int i = 0; i < names.Count; i++){
  string firstName = names.Item["FirstName"].InnerText;
  string lastName = names.Item["LastName"].InnerText;
  Console.WriteLine("Name: {0} {1}", firstName, lastName);
}

【讨论】:

  • 我没有看到 cmets...我先试试那些
  • 谢谢尼古拉斯。这行得通。 :) 其他.... 非常感谢您宝贵的 cmets 和时间 :) :)'
  • 哈哈,这是我写过的第一行 c#。我想它真的和java完全一样,只是有一些大小写变化
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-21
  • 2023-04-04
相关资源
最近更新 更多