问题:如何将枚举字符串和值从 XML 模型解析为对象。
错误:无法将枚举值从 XML 解析为对象模型。
我试图仅解析枚举值,但无法解析为模型。我尝试了一些解决方案,但仍然遇到问题,请帮助指教!谢谢你的支持!
枚举:
public enum DocumentType
{
DocumentType_A = 0,
DocumentType_B = 1,
DocumentType_C = 2
}
XML:
首先从 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] 删除。
我来说两句