KML / XML解析给出错误,即“序列不包含任何元素”

时间:2019-06-21 21:21:53

标签: c# xml asp.net-core kml scrape

因此,我目前正在尝试解析我拥有的KML文档中的特定数据,并且在正确加载该文档(检查是否已通过调试器正确加载)之后,似乎它不会读入任何内容我试图抓取的元素。 我一直收到错误消息“ System.InvalidOperationException:序列不包含任何元素”。谁能解释我的代码为什么不起作用?我已经用尽了许多文档和其他堆栈文章,但无济于事。

public async Task ExecuteKMLCrawl()
        {
            var club = new ClubInfo();
            var list = new List<ClubInfo>();
            XDocument xDoc = XDocument.Load(@"C:\Users\downloads\doc.kml");
            XNamespace ns = "http://www.opengis.net/kml/2.2";
            var placemarks =
                (from x in xDoc.Descendants()
                    where x.Name.LocalName == "Placemark"
                    select new XElement(x)).ToList();
            foreach (var placemark in placemarks)
            {
                //club.ClubName = (from x in placemark.Descendants("name") 
                  //  select x).First().Value;

                club.Name = (from x in placemark.Descendants("Data")
                    where x.Attribute("name")?.Value == "President"
                    select x).First().Value;

                club.Email = (from x in placemark.Descendants("Data")
                    where x.Attribute("name")?.Value == "Email"
                    select x).First().Value;

                club.City = (from x in placemark.Descendants("Data")
                    where x.Attribute("name")?.Value == "City"
                    select x).First().Value;

                club.State = (from x in placemark.Descendants("Data")
                    where x.Attribute("name")?.Value == "State"
                    select x).First().Value;

            }
            list.Add(club);
            await _kmlClubs.InsertManyAsync(list);

XML / KML代码如下所示:

<Placemark>
        <name>Club Name</name>
        <address>*Address Contained Here*</address>
        <ExtendedData>
          <Data name="President">
            <value>*President Name*</value>
          </Data>
          <Data name="Email">
            <value>s*President Email*</value>
          </Data>
          <Data name="College/University">
            <value>*College Name*</value>
          </Data>
          <Data name="City">
            <value>*City Name*</value>
          </Data>
          <Data name="State">
            <value>*State Initials*</value>
          </Data>
        </ExtendedData>
      </Placemark>

placemark.Descendants(“ name”)。ToList();的结果;

<Placemark xmlns="http://www.opengis.net/kml/2.2">
  <name>Mississippi State Swim Club</name>
  <address>Mississippi State University Starkville MS</address>
  <description><![CDATA[President: Private Name<br>Email: Private@gmail.com<br>College/University: Mississippi State University<br>City: Starkville<br>State: MS]]></description>
  <styleUrl>#icon-1899-0288D1</styleUrl>
  <ExtendedData>
    <Data name="President">
      <value>Private Name</value>
    </Data>
    <Data name="Email">
      <value>private@gmail.com</value>
    </Data>
    <Data name="College/University">
      <value>Mississippi State University</value>
    </Data>
    <Data name="City">
      <value>Starkville</value>
    </Data>
    <Data name="State">
      <value>MS</value>
    </Data>
  </ExtendedData>
</Placemark>

0 个答案:

没有答案