2008-09-25 4 views
0

XElements 컬렉션과 해당 속성을 웹 페이지에서 바인딩하려고합니다. 가설 적으로 이는 XML 트리를 나타내는 모든 객체에 대한 것일 수 있습니다. 나는이 일을하는 더 좋은 방법이 있기를 바라고 있습니다.XML 속성에 대해 웹 UI를 바인딩하는 방법은 무엇입니까?

컬렉션의 요소와 각 (이 경우) XElement의 특성 값을 가져 오려면 XPath 쿼리를 사용해야합니까? XML에 대한 데이터 바인딩을 쉽게하기 위해 디자인 된 객체 유형이 있습니까?

<% foreach(var x in element.Descendants()) 
    {%> 
<%= DateTime.Parse(x.Attribute["Time"]).ToShortDate() %> 
<% } %> 
<%-- excuse me, I just vomited a little in my mouth --%> 

답변

0

나는 일반적으로 [있는 XmlAttribute], [XMLELEMENT], [XmlRoot]와 "자리"클래스를 사용하고 난 나에게 자리의 형식의 개체를 제공하는 디시리얼라이저에 전달 된 XML을 가지고있다. 이 작업이 완료되면 강력한 형식의 개체에 대한 기본 데이터 바인딩이 수행됩니다. 여기

은 샘플 "XML 사용 가능"입니다 클래스 :

[XmlRoot(ElementName = "Car", IsNullable = false, Namespace="")] 
public class Car 
{ 
    [XmlAttribute(AttributeName = "Model")] 
    public string Model { get; set; } 
    [XmlAttribute(AttributeName = "Make")] 
    public string Make { get; set ;} 
} 

그리고 여기 파일에서 제대로 역 직렬화하는 방법은 다음과 같습니다

물론
public Car ReadXml(string fileLocation) 
{ 
    XmlSerializer carXml = new XmlSerializer(typeof(Car)); 

    FileStream fs = File.OpenRead(fileLocation); 
    Car result = imageConfig.Deserialize(fs) as Car; 

    return result; 
} 

, 당신은 FileStream을 대체 할 수 MemoryStream에 의해 메모리에서 직접 XML을 읽습니다.

<!-- It is assumed that MyCar is a public property of the current page. --> 
<div> 
    Car Model : <%= MyCar.Model %> <br/> 
    Car Make : <%= MyCar.Make %> 
</div> 
: 일단 HTML에서

,이 같은 것으로 해석 할

관련 문제