2

次の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>

複数のノードがあります。各ノードの値が必要です。Webページ(http://webservices.ns.nl/ns-api-stations-v2)からXMLを取得しました

ログイン(-)パス(-)

現在、私はXMLを文字列として受け取り、それをXDocumentに解析します。

var xml = XDocument.Parse(xmlString);
foreach (var e in xml.Elements("Long"))
{
   var stationName = e.ToString();
}
4

2 に答える 2

3

XPathを使用して「ステーション」ノードを取得し、さらに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ではなく、である場合は、 2行目に。ではなくをStream使用してください。この場合は、作業しているオブジェクトをより正確に説明するように変数に名前を付けることもお勧めします(別名。)。xml.LoadXml(xmlStream);xml.Load(xmlStream)xmlString

于 2012-10-22T19:42:56.690 に答える
0

これにより、すべてのステーション要素の「Long」のすべての値が得られます。

var xml = XDocument.Parse(xmlStream);
var longStationNames = xml.Elements("Long").Select(e => e.Value);
于 2012-10-22T19:39:10.120 に答える