2010-03-11 6 views
1

나는 다음과 같은하여 XDocument 있습니다XDocument에서 특정 요소를 어떻게 추출합니까?

<SomeDoc Id="73" Protocol="rahrah" xmlns="http://schemas.company.com/rah/rah2/2005/"> 
    <Prop1>11111</Prop1> 
    <Prop2>77777</Prop2> 
    <Prop3>88888</Prop3> 
</SomeDoc> 

을 그리고 Prop1의 값을 추출 할.

var prop1 = xml.Element("Prop1"); 

그러나 prop1가 null로 설정되는 :

는 다음 코드를 사용합니다. 요소를 올바르게 추출하려고합니까?

답변

3

xmlXDocument 개체라고 가정합니다.

XDocument 개체는 루트 요소를 포함하고 자식 요소는 포함하지 않습니다. xml.Root.Element("Prop1");을 작성해야합니다.

편집 :

XNamespace ns = "http://schemas.company.com/rah/rah2/2005/"; 
xml.Root.Element(ns + "Prop1"); 
+0

네임 스페이스를 속성 이름의 접두어로 사용해야합니까? 나는 여전히 null 만 반환됩니다. –

+0

그건 속임수 였어. 감사합니다 var ns = xml.Root.Name.Namespace; –

0

는 당신이 XML 변수를 채우는 데 사용하는 코드를 게시 할 수 없습니다 : 당신은이 같은 네임 스페이스를 포함해야합니까?

내 생각에 XDocument가 xml 조각을 유효한 문서로 인식하지 못합니다. 나는 XDocument가 <?xml version="1.0"?> 루트 노드를 기다리고 있다고 생각한다. XDocument 대신 XmlTextReader를 사용해야 할 수도 있습니다.

+0

잘못되었습니다. 그렇지 않으면 예외가 발생합니다. – SLaks

관련 문제