需要从XML获取值

时间:2015-12-24 03:45:21

标签: c# xml-parsing

我需要从XML节点中获取值,请参阅XML下面的示例。



<Names>
    <Name>
        <FirstName>John</FirstName>
        <LastName>Smith</LastName>
    </Name>
    <Name>
        <FirstName>James</FirstName>
        <LastName>White</LastName>
    </Name>
</Names>
&#13;
&#13;
&#13;

我正在使用的代码如下。

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服务,而retun中的Web服务发送字符串。我将该字符串转换为XML文档,当我在服务器中将该文档作为XML文件传输时,我能够看到整个XML。但是当我试图遍历并获得相同的节点时,它是不成功的。 我没有收到任何错误,但控件没有进入 foreach()循环。这意味着 xnList.Count 为0(零)。

过去3天我一直试图弄清楚这一点。 有谁可以帮我解决这个问题。

先谢谢你们!

1 个答案:

答案 0 :(得分: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);
}