C#XML搜索节点值

时间:2013-12-02 03:01:01

标签: c# xml string nodes

我有一个XML文档,格式如下:

<forecast>
   <forecastday>
      <title>monday</title>
      <fcttext>Sunny.</fcttext>
   </forecastday>
   <forecastday>
      <title>tuesday</title>
      <fcttext>Clear</fcttext>
   </forecastday>

标题节点根据今天的日期更改文本(预测下一个x天数)。

我创建了一个文本框,并对文本进行了排序,以查找输入日期的名称,并将其传递给字符串。

我的问题是,如何使用字符串的值(例如:“monday”)来对应节点并从该节点获取值。

3 个答案:

答案 0 :(得分:1)

查看XPath表达式(http://www.w3schools.com/xpath/)以搜索和解析XML。

要搜索标题为“星期二”的预测日的fcttext,您将使用以下XPath表达式:

//forecastday[title='tuesday']/fcttext

答案 1 :(得分:0)

您可以使用此代码获取它。

string xml = @"<forecast>
                   <forecastday>
                      <title>monday</title>
                      <fcttext>Sunny.</fcttext>
                   </forecastday>
                   <forecastday>
                      <title>tuesday</title>
                      <fcttext>Clear</fcttext>
                   </forecastday></forecast>";

string day = "tuesday";
XDocument xDoc = XDocument.Parse(xml);
string value = xDoc.XPathSelectElement(String.Format("//forecastday[title='{0}']/fcttext", day)).Value;

day属性的值替换为组合框中的值。

答案 2 :(得分:0)

假设您的XML内容包含string变量。

var xDoc = XDocument.Parse(input);

var weather = (string)xDoc.Root
                          .Elements("forecastday")
                          .First(x => (string)x.Element("title") == "monday")
                          .Element("fcttext");

顺便说一句。您的示例XML错过了</forecast>结束标记。