Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从XML文档中选择单个节点?_C#_Asp.net_Xml_Exception - Fatal编程技术网

C# 如何从XML文档中选择单个节点?

C# 如何从XML文档中选择单个节点?,c#,asp.net,xml,exception,C#,Asp.net,Xml,Exception,我想从API的XML响应中读取数据,即。我使用了下面的代码来阅读它 HttpWebRequest GoogleRequest; HttpWebResponse GoogleResponse = null; XmlDocument GoogleXMLdoc = null; try { GoogleRequest = (HttpWebRequest)WebRequest.Create("http://api.wunderground.com/a

我想从API的XML响应中读取数据,即。我使用了下面的代码来阅读它

    HttpWebRequest GoogleRequest;
    HttpWebResponse GoogleResponse = null;
    XmlDocument GoogleXMLdoc = null;
    try
    {
        GoogleRequest = (HttpWebRequest)WebRequest.Create("http://api.wunderground.com/api/c94ec600fe494bc2/astronomy/q/Cayman/Grand.xml");
        GoogleResponse = (HttpWebResponse)GoogleRequest.GetResponse();
        GoogleXMLdoc = new XmlDocument();
        GoogleXMLdoc.Load(GoogleResponse.GetResponseStream());

        XmlNode root = GoogleXMLdoc.DocumentElement;

        //XmlNodeList nodeList1 = root.SelectNodes("/sunset/");
        XmlNode test = root.SelectSingleNode("/moon_phase/");
     }
//.....
但我是异常表达式必须计算到代码最后一行的节点集。我尝试了一些解决方案,但无法获得数据。其实我想要的是:我想要太阳落山和日出的时间。请帮助我如何解决这个问题

这是我的想法(不是测试)!给定的表达式的计算结果为布尔值,而不是节点集

试试这个:

XmlNode test = root.SelectNodes("//moon_phase/")[0];

这是我的想法(不是测试)!给定的表达式的计算结果为布尔值,而不是节点集

试试这个:

XmlNode test = root.SelectNodes("//moon_phase/")[0];


当您希望通过xpath获取xml时,您应该获得如下内容:

    XmlNode test = root.SelectSingleNode("//moon_phase/percentIlluminated");

这是您的结果:

<version>0.1</version><termsofService>http://www.wunderground.com/weather/api/d/terms.html</termsofService>
<features><feature>astronomy</feature></features>
<moon_phase><percentIlluminated>91</percentIlluminated><ageOfMoon>12</ageOfMoon><current_time><hour>1</hour><minute>51</minute></current_time><sunset><hour>17</hour><minute>50</minute></sunset><sunrise><hour>6</hour><minute>51</minute></sunrise></moon_phase><sun_phase><sunset><hour>17</hour><minute>50</minute></sunset><sunrise><hour>6</hour><minute>51</minute></sunrise></sun_phase>
0.1http://www.wunderground.com/weather/api/d/terms.html
天文学
91:


/正文()

选择最后一个“actor”元素

//actor[last()]

使用第一个和第二个“参与者”元素的位置选择它们

//参与者[位置()<3]

选择所有具有“id”属性的“actor”元素

//演员[@id]

选择“id”属性值为“3”的“actor”元素

//演员[@id='3']

选择“id”属性值小于或等于“3”的所有“参与者”节点


//actor[@id当您想要通过xpath获取xml时,您应该得到如下结果:

    XmlNode test = root.SelectSingleNode("//moon_phase/percentIlluminated");

这是您的结果:

<version>0.1</version><termsofService>http://www.wunderground.com/weather/api/d/terms.html</termsofService>
<features><feature>astronomy</feature></features>
<moon_phase><percentIlluminated>91</percentIlluminated><ageOfMoon>12</ageOfMoon><current_time><hour>1</hour><minute>51</minute></current_time><sunset><hour>17</hour><minute>50</minute></sunset><sunrise><hour>6</hour><minute>51</minute></sunrise></moon_phase><sun_phase><sunset><hour>17</hour><minute>50</minute></sunset><sunrise><hour>6</hour><minute>51</minute></sunrise></sun_phase>
0.1http://www.wunderground.com/weather/api/d/terms.html
天文学
91:


/正文()

选择最后一个“actor”元素

//actor[last()]

使用第一个和第二个“参与者”元素的位置选择它们

//参与者[位置()<3]

选择所有具有“id”属性的“actor”元素

//演员[@id]

选择“id”属性值为“3”的“actor”元素

//演员[@id='3']

选择“id”属性值小于或等于“3”的所有“参与者”节点

//演员[@id试试看

试一试

<root xmlns:foo="http://www.foo.org/" xmlns:bar="http://www.bar.org">
    <actors>
        <actor id="1">Christian Bale</actor>
        <actor id="2">Liam Neeson</actor>
        <actor id="3">Michael Caine</actor>
    </actors>
    <foo:singers>
        <foo:singer id="4">Tom Waits</foo:singer>
        <foo:singer id="5">B.B. King</foo:singer>
        <foo:singer id="6">Ray Charles</foo:singer>
    </foo:singers>
</root>
GoogleXMLdoc.SelectSingleNode("//moon_phase[0]");