反序列化xlink:href

时间:2014-06-23 14:35:22

标签: c# xml

我有一些xml,需要将其反序列化为C#对象,但我无法弄清楚如何从xlink:href获取值。我得到的例外是

  

'xlink:href'中的名称字符无效。

但是当我将XmlAttribute值更改为href或xlink时,没有设置值。如何使用XmlSerializer获取此值?

XML示例:

<result xmlns:xlink="http://www.w3.org/1999/xlink">
    <items country="nl">
       <item name="cube" xlink:href="http://url"/>
       <item name="square"  xlink:href="http://url"/>
    </items>
</result>

C#Class:

[XmlRoot("result")]
public class Result
{
    [XmlArray("items")]
    [XmlArrayItem("item")]
    public List<Item> Items { get; set; }
}

public class Item
{
    [XmlAttribute("name")]
    public string Name { get; set; }

    [XmlAttribute("xlink:href")]
    public string Url { get; set; }
}

反序列化代码:

Stream response = GetResponseFromRequest(requestUrl);
var serializer = new XmlSerializer(typeof(Result));
Result result = (Result)serializer.Deserialize(response);

1 个答案:

答案 0 :(得分:1)

将名称空间添加到XmlAttribute属性:

public class Item
{
    [XmlAttribute("name")]
    public string Name { get; set; }

    [XmlAttribute("href", Namespace="http://www.w3.org/1999/xlink")]
    public string Url { get; set; }
}