1

ウェブサイトから文字列を引っ張っています。(文字列全体を印刷できるので、正しく引っ張っていることがわかります)。ソース XML 文字列:

<feed
xmlns = 'http://www.w3.org/2005/Atom'
xmlns:cap = 'urn:oasis:names:tc:emergency:cap:1.1'
xmlns:ha = 'http://www.alerting.net/namespace/index_1.0'
>
<!-- http-date = Mon, 10 Oct 2013 17:29:01 GMT -->

<id>http://alerts.weather.gov/cap/la.atom</id>
<logo>http://alerts.weather.gov/images/xml_logo.gif</logo>
<generator>NWS CAP Server</generator>
<updated>2013-10-21T17:29:01+00:00</updated>
<author>
<name>w-nws.webmaster@noaa.gov</name>
</author>
<title>Current Watches, Warnings and Advisories for Louisiana Issued by the National Weather Service</title>
<link href='http://alerts.weather.gov/cap/la.atom'/>

<entry>
  <id>http://alerts.weather.gov/cap/la.atom</id>
  <updated>2013-10-21T17:29:01+00:00</updated>
  <author>
    <name>w-nws.webmaster@noaa.gov</name>
  </author>
  <title>There are no active watches, warnings or advisories</title>
  <link href='http://alerts.weather.gov/cap/la.atom'/>
  <summary>There are no active watches, warnings or advisories</summary>
</entry>
</feed>

私がやろうとしているのは、各 [entry] 内の [title] 要素のテキストを取得することです (この例では簡単にするために 1 つしかありませんが、後でさらに追加する予定です)。[id] ブロックから [title] を取得したくありません。[フィード] 内で各 [エントリ] を検索し、[エントリ] 内で [タイトル] を検索するロジックをコーディングするにはどうすればよいですか? それを取得したら、値を文字列として問題なく取得できます。

今、私は持っています:

    XElement root = XElement.Parse(xmlString);
    XNamespace ns = XNamespace.Get("http://www.w3.org/2005/Atom");

        String title = (String)
            (from elem in root.Descendants(ns + "title") select elem).First();

        // for testing purposes: Output element Value
        Console.WriteLine(title);

        Console.WriteLine("Press any key to exit.");
        Console.ReadKey();

[フィード] の下の [id] の下に最初の [タイトル] を書いています。

どうもありがとう、TK

新しいバージョンを読みやすくするために編集: (ロナンに感謝)

XElement root = XElement.Parse(xmlString);

XNamespace ns = XNamespace.Get("http://www.w3.org/2005/Atom");

IEnumerable<XElement> xlist =
    root.Descendants("entry").Select(elem => elem.Descendants("title").Single());

foreach (XElement el in xlist)
    Console.WriteLine("Title: " + el.Value);

Console.WriteLine("Press any key to exit.");
Console.ReadKey();

それが今のようです。

4

1 に答える 1

2

下に移動してから上に移動することで逆に考えています(タイトルを確認してから親を確認します)代わりに下に移動します(エントリを取得し、別の選択をネストしてそれらのタイトルを見つけます)

Root.Descendants(ns + "entry")
    .Select(elem=>elem.Descendants(ns + "title").Single());
于 2013-10-21T20:18:59.290 に答える