如何在 C# 中反序列化具有前缀的 XML
Posted
技术标签:
【中文标题】如何在 C# 中反序列化具有前缀的 XML【英文标题】:How to deserialize XML having prefix in C# 【发布时间】:2021-02-23 11:10:18 【问题描述】:这是我的 XML
<?xml version="1.0" encoding="UTF-8"?>
<ls:LeadResponse xmlns:ls="example.org/ls">
<ls:status>OK</ls:status>
<ls:code>approved</ls:code>
<ls:message>posted</ls:message>
</ls:LeadResponse>
它到处都有前缀ls
。
为了反序列化我已经这样做了
已创建模型:
[XmlRoot(ElementName = "LeadResponse",Namespace="example.org/ls")]
public class LeadProviderResponse
[XmlElement(Namespace = "example.org/ls")]
public string Status get; set;
[XmlElement(Namespace = "example.org/ls")]
public string Code get; set;
[XmlElement(Namespace = "example.org/ls")]
public string Message get; set;
以及反序列化的代码
using var streamReader = new StringReader(xmlContent);
using var xmlReader = XmlReader.Create(streamReader, null);
var serializer = new System.Xml.Serialization.XmlSerializer(typeof(LeadProviderResponse));
var result = (LeadProviderRespone)serializer.Deserialize(xmlReader);
它无法正确反序列化。谁能告诉我哪里做错了?
【问题讨论】:
【参考方案1】:外壳:
[XmlElement(Namespace = "example.org/ls", ElementName = "status")]
public string Status get; set;
[XmlElement(Namespace = "example.org/ls", ElementName = "code")]
public string Code get; set;
[XmlElement(Namespace = "example.org/ls", ElementName = "message")]
public string Message get; set;
或(相同的结果):
[XmlElement("status", Namespace = "example.org/ls")]
public string Status get; set;
[XmlElement("code", Namespace = "example.org/ls")]
public string Code get; set;
[XmlElement("message", Namespace = "example.org/ls")]
public string Message get; set;
【讨论】:
哎呀..不错。谢谢。以上是关于如何在 C# 中反序列化具有前缀的 XML的主要内容,如果未能解决你的问题,请参考以下文章