C# 如何从XML文档中选择单个节点?
我想从API的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
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]");