【问题标题】:get XML Namespace Elements with C#使用 C# 获取 XML 命名空间元素
【发布时间】:2012-08-18 13:58:39
【问题描述】:

我在解析带有命名空间的 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 属性,但我没有找到任何解决方案。

提前致谢

【问题讨论】:

    标签: c# xml xamarin.ios


    【解决方案1】:

    您可以使用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);
        }
    

    【讨论】:

      【解决方案2】:

      这是正则表达式中的一个

      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
      

      【讨论】:

        猜你喜欢
        • 2022-01-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-07-06
        • 1970-01-01
        • 1970-01-01
        • 2015-01-30
        相关资源
        最近更新 更多