考虑以下XML:
<Stations>
<Station>
<Code>HT</Code>
<Type>123</Type>
<Names>
<Short>H'bosch</Short>
<Middle>Den Bosch</Middle>
<Long>'s-Hertogenbosch</Long>
</Names>
<Country>NL</Country>
</Station>
</Stations>
有多个节点。我需要每个节点的值。 我从网页上获得了XML(http://webservices.ns.nl/ns-api-stations-v2)
登录( - )通过( - )
目前我将XML作为字符串并将其解析为XDocument。
var xml = XDocument.Parse(xmlString);
foreach (var e in xml.Elements("Long"))
{
var stationName = e.ToString();
}
答案 0 :(得分:3)
您可以使用XPath检索“Station”节点,然后使用更多XPath获取每个后续子节点。这个例子没有使用Linq,看起来你可能试图从你的问题做起,但这里是:
XmlDocument xml = new XmlDocument();
xml.Load(xmlStream);
XmlNodeList stations = xml.SelectNodes("//Station");
foreach (XmlNode station in stations)
{
var code = station.SelectSingleNode("Code").InnerXml;
var type = station.SelectSingleNode("Type").InnerXml;
var longName = station.SelectSingleNode("Names/Long").InnerXml;
var blah = "you should get the point by now";
}
注意:如果您的xmlStream
变量是String
而不是Stream
,请对{2}使用xml.LoadXml(xmlStream);
,而不是xml.Load(xmlStream)
。如果是这种情况,我还建议您为变量命名,以便更准确地描述您正在使用的对象(又名。xmlString
)。
答案 1 :(得分:0)
这将为您提供&#34; Long&#34;的所有值。对于每个Station元素。
var xml = XDocument.Parse(xmlStream);
var longStationNames = xml.Elements("Long").Select(e => e.Value);