Как мне привязать веб-интерфейс к атрибутам XML?

Я хочу привязать свой пользовательский интерфейс к коллекции XElements и их свойств на веб-странице. Гипотетически это может быть любой объект, представляющий дерево XML. Я надеюсь, что может быть лучший способ сделать это.

Следует ли использовать запрос XPath для получения элементов коллекции и значений атрибутов каждого (в данном случае) XElement? Существует ли тип объекта, предназначенный для упрощения привязки данных к XML?

<% foreach(var x in element.Descendants()) 
    {%>
<%= DateTime.Parse(x.Attribute["Time"]).ToShortDate() %>
<% } %>
<%-- excuse me, I just vomited a little in my mouth --%>
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
343
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Обычно я использую класс «заполнитель» с [XmlRoot], [XmlElement], [XmlAttribute], и ​​мне передается xml в десериализатор, который дает мне объект типа заполнителя. Как только это будет сделано, останется только выполнить базовую привязку данных к строго типизированному объекту.

Вот пример класса «Xml Enabled»:

[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 прямо из памяти.

Попав в Html, это будет примерно так:

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

Другие вопросы по теме