如何反序列化C#中有前缀的XML



这是我的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);

它无法正确反序列化。有人能告诉我哪里做错了吗?

套管:

[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; }

最新更新