2010-03-09 2 views
0

내 객체의 모양 객체를 초기화로드 XML은 다음

이제

XDocument doc = XDocument.Load(HttpContext.Current.Server.MapPath("~/files/test.xml")); 

가 어떻게이 XML에서 개체를로드합니다 :

<nodes> 
<template name="someKey"> 
    <node name="title">soem title</node> 
    <node name="body">some body text here</node> 
</template> 
</nodes> 

그래서 같은 문서를로드 할 수 있습니까? (이름 = somekey와 템플릿 말할

답변

1
var templates = doc.Elements("template") 
.FirstOrDefault(template=>template.Attribute("name").Value.Equals("someKey") 
.Select(template=>new Template 
{ 
    Title = template.Elements("node").FirstOrDefault(node=>node.Attribute("name").Value.Equals("title")).Value, 
    Body = template.Elements("node").FirstOrDefault(node=>node.Attribute("name").Value.Equals("body")).Value 
}); 
+0

xml에 오류가 없으면 오류가 반환됩니까? – Blankman

+0

@Blankman : 예. 이러한 오류를 피하기 위해 기본 또는 기본 호출 후에 기본값을 넣을 수 있습니다. 예 : .FirstOrDefault (template => template.Attribute ("name").) Value.Equals ("someKey") ?? new XElement ("Somekey") – Gregoire

+0

매우 고마워! – Blankman

0
당신은 당신의 XML에 대한 XSD (스키마)를 구축하고 XSD.exe 도구는 당신이 당신의 XML이 그것으로 직렬화 될 수있는 클래스를 생성 할 수있는 사용 할 수

.

나는 이것이 당신이 원했던 것이 확실하지만 확실하게 작동한다. :)

0

XML 파일에서 직접 객체로 이동하려면 (특히 클래스)을 사용해야한다.

그런 식으로 파일간에 이동할 수있는 사용자 지정 솔루션을 만들 필요가 없습니다.

msdn 페이지의 예제를 살펴보십시오.이 기능에 대한 좋은 정보가 많이 있습니다.