如何在 Razor 中从模型中读取 xml 字符串

本文关键字:读取 xml 字符串 模型 Razor | 更新日期: 2023-09-27 18:34:00

我有一个现有的.net应用程序在razor中呈现数据,我想使用razor为每条记录显示XML字符串中的特定节点。 但我不确定如何写它。 模型中将有 50+ 条记录,所以我想确保它是有效的。

模型中的每个记录都有自己的 xmldata。 例如:


型:

namespace Project.Web.ViewModels
{  
   public class SampleModel  
   {  
      public int id { get; set; }  
      public string xmldata { get; set; }  
   }  
}


第一条记录的 XMLDATA :

<content>
  <user>
    <firstname>Jim</firstname>
    <lastname>Smith</lastname>
  </user>
</content>


第二条记录的 XMLDATA :

<content>
  <user>
    <firstname>John</firstname>
    <lastname>Jones</lastname>
  </user>
</content>


csHtml:

@model Project.Web.ViewModels.SampleModel
@foreach (item in Model) {
   <p><b>ID:</b> @item.id</p>
   <p><b>FirstName:</b> //Add firstname from @item.xmldata here</p>
   <p><b>LastName:</b> //Add lastname from @item.xmldata here</p>
   <br>
}


期望输出:

ID: 1
FirstName: Jim
LastName: Smith
ID: 2
FirstName: John
LastName: Jones


有关如何在 cshtml 中编写剃刀代码的示例将不胜感激!

如何在 Razor 中从模型中读取 xml 字符串

这种方法怎么样:

 using System.Xml.Linq;
 public class SampleModel
 {
     private XDocument document;
     public int Id {get;set;}
     public string FirstName 
     {
         get { return document.Descendants("firstname").Single().Value; }
     }
     // other properties in the same manner
     // Dynamic
     public string GetData(string fieldName)
     { 
        return document.Descendants(fieldname).Single().Value;
     }
     public SampleModel(){}
     public SampleModel(int id, string xml)
     {
        this.Id = id;
        this.document = XDocument.Parse(xml);
     }

 }

并在视图中

@model IEnumerable<Project.Web.ViewModels.SampleModel>
@foreach (item in Model) {
   <p><b>ID:</b> @item.id</p>
   <p><b>FirstName:</b> @item.GetData("firstname")</p>
   <p><b>LastName:</b> @item.GetData("lastname")</p>
   <br>
}