كيف يمكنني ربط واجهة المستخدم على شبكة الإنترنت ضد XML السمات ؟

StackOverflow https://stackoverflow.com/questions/133077

  •  02-07-2019
  •  | 
  •  

سؤال

اريد ربط بلدي واجهة المستخدم ضد مجموعة من 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 --%>
هل كانت مفيدة؟

المحلول

أنا عادة استخدام "النائب" الدرجة مع [XmlRoot], [XmlElement], [XmlAttribute] ولقد xml التي تم تمريرها إلى deserializer الذي يعطيني كائن من نوع العنصر النائب.حالما يتم ذلك, الشيء الوحيد الذي غادر الى القيام به هو بعض الأساسي ربط البيانات إلى كتابتها بقوة الكائن.

هنا عينة فئة "أكس تمكين":

[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>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top