我有一些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);
答案 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; }
}