我正在尝试使用带有Datacontract类的Atom提要转换XML,但我失败了....
我的代码如下:
Content.ReadAsAsync<ArticleDTOs>()
[Serializable]
[DataContract(Namespace = "urn:schemas-something:some", Name = "document")]
public class ArticleDTOs
{
[DataMember(Name = "entry")]
public entry entry { get; set; }
}
[Serializable]
[DataContract(Namespace ="http://www.w3.org/2005/Atom")]
public class entry
{
[DataMember(Name = "id")]
public string id { get; set; }
}
}
我觉得问题与
中的命名空间声明有关datacontract ....我应该如何设置Namespace以正确读取XML Namespace ???
这是我必须反序列化的XML
<?xml version="1.0" encoding="utf-8"?>
<document id="m.fy7c2fsvzxtv" xmlns:atom="http://www.w3.org/2005/Atom" xmlns="urn:schemas-something:some">
<atom:entry><atom:id>m.fy7c2fsvzxtv</atom:id><atom:title>test title</atom:title><atom:published>2013-07-08T17:21:06.4035574+01:00</atom:published><atom:updated>2013-07-08T17:21:06.4050577+01:00</atom:updated><subheadline>test sub headline</subheadline><standfirst>desc</standfirst><keywords>keywords</keywords>
<atom:content>body with Encoding </atom:content></atom:entry></document>
答案 0 :(得分:0)
我没有足够的声誉来发表评论,否则我会在评论中要求澄清......
根据您必须反序列化的示例XML,双引号("
)在version,encoding和id属性中进行转义。如图所示,这不是有效的XML。
XML是您自己程序的输出吗?如果是这样,找到它逃避字符的位置,并防止它在写入输出时这样做。
如果那是您必须使用的文件,那么我建议删除所有反转双引号的反斜杠:
// We have to escape the backslash and the quote both, with a backslash
xmlString.Replace("\\\#","\#");
也许这可以解决你的问题?
最后,您只提到您的代码“失败”,并且未能提供任何类型的异常或错误消息...如果上述解决方案不适合您,请提供有关代码失败的更多详细信息