1


名前空間XML 形式の xml ファイルを解析するのに少し問題があります

<rss version="2.0" xmlns:fh="http://rss.flightstats.com/ns/rss/1.0">
<channel>
  <item>
    <fh:FlightHistory FlightHistoryId="271955988" DepartureDate="2012-08-16 00:30" ArrivalDate="2012-08-16 04:09" 
    </fh:FlightHistory>
  </item>
</channel>

C# で属性を読み取りたいのですfh:FlightHistoryが、解決策が見つかりませんでした。

前もって感謝します

4

2 に答える 2

4

Linq-to-XMLLinqそれ自体を使用できます

 XDocument doc = XDocument.Load(@"file.xml");
 XNamespace ns="http://rss.flightstats.com/ns/rss/1.0";

 var flight = doc.Descendants(ns + "FlightHistory");
 foreach (var ele in flight)
 {
  Console.WriteLine(ele.Attribute("FlightHistoryId").Value);
  }

また

  var flight = doc.Descendants(ns + "FlightHistory")
                  .Select(ele => new 
                   {
                       FlightHistoryId=ele.Attribute("FlightHistoryId").Value,
                       DepartureDate=ele.Attribute("DepartureDate").Value,
                       ArrivalDate=ele.Attribute("ArrivalDate").Value 
                   }).FirstOrDefault();
    if (flight != null)
    {
        Console.WriteLine(flight.FlightHistoryId + " " + flight.DepartureDate + " " + flight.ArrivalDate);
    }
于 2012-08-18T14:17:03.307 に答える
0

これが正規表現の1つです

string xmlFileString="<rss version.....</item></channel>";

Regex r=new Regex("(?<=<fh:FlightHistory).*?(?=>|</fh:FlightHistory>)",RegexOptions.Singleline);

foreach(Match m in r.Matches(xmlFileString))
Console.WriteLine(m.Value);//your required output
于 2012-08-18T14:07:44.390 に答える