我需要从XML节点中获取值,请参阅XML下面的示例。
<Names>
<Name>
<FirstName>John</FirstName>
<LastName>Smith</LastName>
</Name>
<Name>
<FirstName>James</FirstName>
<LastName>White</LastName>
</Name>
</Names>
&#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天我一直试图弄清楚这一点。 有谁可以帮我解决这个问题。
先谢谢你们!
答案 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);
}