【问题标题】:XML to Object Conversion for Field Type字段类型的 XML 到对象转换
【发布时间】:2017-10-19 06:44:16
【问题描述】:

我需要根据我的 xml 制作对象,这个对象将用作 c# 中 web 服务的输入。

如果我有这个 xml,

<v1:Field type="Note">
   <v1:name>Buyer’s Name should be as per Passport / Trade License. For existing Emaar property owners, please provide details as per existing profile.</v1:name>
   <v1:category>MESSAGE</v1:category>
   <v1:mandatory>N</v1:mandatory>
   <v1:alias>DESCLAIMER_FYI</v1:alias>
   <v1:value>Buyer’s Name should be as per Passport / Trade License. For existing Emaar property owners, please provide details as per existing profile.</v1:value>
</v1:Field>

我可以根据它来上课, 例如

public class Field
{
    public string name{ set; get; }
    public string category { set; get; }
    public string mandatory { set; get; }
    public string alias { set; get; }
    public string value { set; get; }
}

将使用哪个属性来获取该值 &lt;v1:Field type="Note"&gt;?

如果我将类型设置为公共属性,它将作为 xml 中的标签出现,如名称、类别即将出现,但我想使用称为属性的字段标签来制作它。我可以在 C# 中使用什么作为 Field 标签附带的属性。

【问题讨论】:

    标签: c# .net xml xml-parsing


    【解决方案1】:
    public class SomeIntInfo
    {
        [XmlAttribute]
        public int Value { get; set; }
    }
    

    【讨论】:

      【解决方案2】:

      试试 xml linq。我在下面测试代码:

      using System;
      using System.Collections.Generic;
      using System.Linq;
      using System.Text;
      using System.Xml;
      using System.Xml.Linq;
      
      namespace ConsoleApplication1
      {
          class Program
          {
              const string FILENAME = @"c:\temp\test.xml";
              static void Main(string[] args)
              {
                  XDocument doc = XDocument.Load(FILENAME);
      
                  XElement root = doc.Root;
                  XNamespace ns = root.GetNamespaceOfPrefix("v1");
      
                  var results = root.Descendants(ns + "Field").Select(x => new Field() {
                      type = (string)x.Attribute("type"),
                      name = (string)x.Element(ns + "name"),
                      category = (string)x.Element(ns + "category"),
                      mandatory = (string)x.Element(ns + "mandatory"),
                      alias = (string)x.Element(ns + "alias"),
                      value = (string)x.Element(ns + "value"),
                  }).FirstOrDefault();
              }
          }
          public class Field
          {
              public string type { get; set; }
              public string name { set; get; }
              public string category { set; get; }
              public string mandatory { set; get; }
              public string alias { set; get; }
              public string value { set; get; }
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-19
        • 2018-10-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多