如何将枚举字符串和值从 XML 模型解析为对象

这个哈

问题:如何将枚举字符串和值从 XML 模型解析为对象。

错误:无法将枚举值从 XML 解析为对象模型。

我试图仅解析枚举值,但无法解析为模型。我尝试了一些解决方案,但仍然遇到问题,请帮助指教!谢谢你的支持!

  • 枚举:

    public enum DocumentType
    {
        DocumentType_A = 0,
        DocumentType_B = 1,
        DocumentType_C = 2
    }
    
  • XML:

    图像

布鲁诺·马丁斯Pro

首先从 XML 中获取节点,然后将其解析为枚举。

const string str = "<?xml version=\"1.0\" encoding=\"utf-8\"?><Document><DocumentId>1</DocumentId><Attachment></Attachment><Metadata><DocumentType>0</DocumentType></Metadata></Document>";
var xml = new XmlDocument();
xml.LoadXml(str);

var node = xml.DocumentElement.SelectSingleNode("/Document/Metadata/DocumentType").InnerText;
DocumentType currentEnum = (DocumentType)Enum.Parse(typeof(DocumentType), node);
int currentEnumId = (int)currentEnum;

基于评论的更新 - 使用枚举将 xml 反序列化为对象

XML

<?xml version="1.0" encoding="utf-8"?>
<Document>
<DocumentId>1</DocumentId>
<Attachment></Attachment>
<Metadata>
    <DocumentType>1</DocumentType>
</Metadata>
</Document>

楷模

    public class Document 
    { 
        public long DocumentId { get; set; } 

        public Metadata Metadata { get; set; } 
    }

    public class Metadata
    {

        public string DocumentType  { get; set; } 

        public DocumentType Type 
        {
            get
            {
                return (DocumentType)Enum.Parse(typeof(DocumentType), DocumentType);
            }
        }

    }

    public enum DocumentType 
    { 
        DocumentType_A = 0, 
        DocumentType_B = 1, 
        DocumentType_C = 2 
    };

将 XML 转换为对象:

    var serializer = new XmlSerializer(typeof(Document)); 
    using (var reader = XmlReader.Create("/Users/brunomartinspro/Desktop/myxml.xml")) 
    { 
        Document document = (Document)serializer.Deserialize(reader); 
        var mySuperType = document.Metadata.Type; 
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章