는 document.Elements("url")
대신 document.Root.Elements("url")
에서거야 ... 그래서 존재하지 않는 url
의 루트 요소을 찾고 있다는 점이다.
이를 시도해보십시오 loc
요소 어쨌든 url
요소 바로 아래에 모두 같은 내가 여기 Descendants
을 사용하지 않은
List<string> urlList = doc.Root.Elements("url")
.Elements("loc")
.Select(x => (string) x)
.ToList();
참고.
만loc
요소는 바로 사람이 어쨌든있는 경우 사용할 수있는 또 다른 방법은 다음과 같습니다
List<string> urlList = doc.Descendants("loc")
.Select(x => (string) x)
.ToList();
는 (나는
urlList
미리 비어 있으리라 믿고있어 ... 상황이 이런 종류의 내가 전체 작업에 LINQ를 사용하고 컬렉션에만 추가하는
foreach
루프를 제거하는 것이 좋습니다.
EDIT :이 코드는 저에게 효과적입니다. 다음은 짧지 만 완전한 프로그램입니다 :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Xml.Linq;
class Test
{
static void Main(string[] args)
{
string xml = @"<?xml version=""1.0"" encoding=""UTF-8""?>
<urlset>
<url>
<loc>element1</loc>
<changefreq>daily</changefreq>
<priority>0.2</priority>
</url>
<url>
<loc>element2</loc>
<changefreq>daily</changefreq>
<priority>0.2</priority>
</url>
</urlset>";
XDocument doc = XDocument.Parse(xml);
List<string> urlList = doc.Root
.Elements("url")
.Elements("loc")
.Select(x => (string) x)
.ToList();
Console.WriteLine(urlList.Count);
}
}
안녕 존! 귀하의 코드를 사용하지만 내 urlList는 여전히 비어 있습니다! :(문자열을 XML로 파싱합니다.) –
@Chelsea_cole : 지금 확인 중 ... –
@Chelsea_cole : 저의 작품 - 작동하는 모습을 보여주는 완전한 프로그램을 게시했습니다. 원본 XML을 수정해야한다는 점에 유의하십시오. ''끝에서' '로 변경하십시오. 내 코드를 시도한 다음 시도한 것과 그 차이점을 확인하십시오. –