加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

从.NET类型获取XML数据类型?

发布时间:2020-12-16 23:10:54 所属栏目:百科 来源:网络整理
导读:我想知道是否有一个库 – 在.NET或其他方面 – 将.NET类型(例如,整数,字符串等)转换为 XML datatypes(例如,int,string).请注意,我正在寻找转换类型,而不是变量的内容.例如: var xmlType = Convert.ToXmlType(typeof(bool));Assert.That(xmlType.ToString(),
我想知道是否有一个库 – 在.NET或其他方面 – 将.NET类型(例如,整数,字符串等)转换为 XML datatypes(例如,int,string).请注意,我正在寻找转换类型,而不是变量的内容.例如:

var xmlType = Convert.ToXmlType(typeof(bool));
Assert.That(xmlType.ToString(),Is.EqualTo("boolean"));

我不介意制作一个查找表,因为我没有处理太多的类型,但我认为重用这样的东西会很好,如果它已经在那里了.

解决方法

您可以使用以下代码创建映射,但它不是一对一映射.将此减少为一对一将是您的最终实施细节:

var mapping = (from XmlTypeCode cc in Enum.GetValues(typeof(XmlTypeCode))
              let xt = XmlSchemaType.GetBuiltInSimpleType(cc)
              where xt != null
              group cc by xt.Datatype.ValueType into gg
              select new { Type = gg.Key,XmlTypeCodes = gg.ToArray() })
              .ToDictionary(m => m.Type,m => m.XmlTypeCodes);

样本输出:

System.Boolean => Boolean
System.Byte => UnsignedByte
System.Byte[] => HexBinary,Base64Binary
System.DateTime => DateTime,Time,Date,GYearMonth,GYear,GMonthDay,GDay,GMonth
System.Decimal => Decimal,Integer,NonPositiveInteger,NegativeInteger,NonNegative
Integer,PositiveInteger
...

解决一对一问题的一个不错的方法是获取代码表中的第一个条目,该条目适用于除String之外的每种类型.这也可能不适用于较新的BCL类型,但可能会继续.对于MS重新排列XmlTypeCode枚举来说,这将是一个重大变化,但这并不是说这是万无一失的:

// same as above except the ToDictionary
.ToDictionary(
    m => m.Type,m => m.Type != typeof(string) ? m.XmlTypeCodes.First() : XmlTypeCode.String);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读