2010-12-29 6 views
1

일부 XML을 반환하는 .asmx webservice가 있습니다. XML 샘플 비트는 다음과 같습니다.기본 LINQ to XML 질문

<?xml version="1.0" encoding="utf-8"?> 
<string xmlns="http://tempuri.org/">http://www.mydomain.com/sample.txt</string> 

저는 LINQ를 처음 사용하지만 익숙해졌습니다. 문자열 요소 내부의 값을 가져와야합니다. 그러나 나는 LINQ로 그것을하는 방법을 잘 모르겠습니다. 현재 시도 중입니다.

string text = GetXmlText(); 
XDocument xml = XDocument.Parse(text); 
string url = xml.Descendants("string").SingleOrDefault().Value; 

이 코드는 예외를 throw합니다. 하지만 내가 뭘 잘못하고 있는지 모르겠습니다. LINQ로 응답 값을 얻으려면 어떻게해야합니까?

감사합니다.

+0

먼저 모든 하위 항목이 요소가 아닙니다. 둘째, SingleOrDefault 대신 FirstOrDefault를 사용하십시오. 하지만이 예제에서는 메소드로 문제를 해결할 수 있습니다 Element() – vorrtex

+0

어떤 예외가 있습니까? – ShahidAzim

답변

1

제공된 특정 XML에는 루트 노드 만 포함되어 있으며 그 값을 원하기 때문에이 특별한 용도로만 필요합니다.

string url = xml.Root.Value; 

XML이 실제로 더 복잡한 경우 정교하게 작성하십시오. 그러나 string 요소의 xmlns 속성을 살펴보십시오. 특정 요소 또는 하위 항목을 직접 참조하려는 상황을 처리하려면 XNamespace 개체를 사용해야합니다.

XNamespace ns = "http://tempuri.org/"; 
string url = (string)xml.Descendants(ns + "string").FirstOrDefault();