在 Windows Phone 7 中解析 XML

Posted

技术标签:

【中文标题】在 Windows Phone 7 中解析 XML【英文标题】:Parsing XML in Windows Phone 7 【发布时间】:2012-01-22 01:20:23 【问题描述】:
<A xmlns="http://www.aaa.com/bbb/"
xmlns:i="http://www.w3.org/2001/XMLSchema-instance">    
<B>
  <aa>AUH</aa><bb>5</bb><cc>Abu</cc>
</B>
<B>
  <aa>AUH</aa><bb>7</bb><cc>ghi</cc>
</B>
  <ServiceResponse><ErrorMessage i:nil="true"/><ExecutionStatus>SUCCESS</ExecutionStatus></ServiceResponse>
</A>

我有一个类似上面的 XML,我已经为 A、B 和 ServiceResponse 创建了类。

我正在尝试使用以下代码进行解析:

XmlSerializer ser = new XmlSerializer(typeof(A));
objAirportListResponse = ser.Deserialize(new StringReader(str)) as A;

在上面的代码中,“str”是包含上面 XML 的字符串。

我收到如下错误:

XML 文档中存在错误 (1, 2)(System.InvalidOperationException)

如果我删除 xmlns="http://www.aaa.com/bbb/" xmlns:i="http://www.w3.org/2001/XMLSchema-instance" 从 XML 我得到了同样的错误 因为 i:nil="true"。然后我删除了 xmlns="http://www.aaa.com/bbb/" xmlns:i="http://www.w3.org/2001/XMLSchema-instance" 和 i:nil="true" 我试过了解析XML,这次成功解析到class。

但删除 xmlns="http://www.aaa.com/bbb/" xmlns:i="http://www.w3.org/2001/XMLSchema-instance" 和 i:nil="true"不是正确的方法,请帮助我如何解析上面的示例。

提前致谢。

【问题讨论】:

什么是例外? InvalidOperationException.MessageInvalidOperationException.InnerException 可能会告诉你到底出了什么问题。 这是我的异常:System.InvalidOperationException: XML 文档中存在错误 (1, 2)。 ---> System.InvalidOperationException: 不是预期的。在 System.Xml.Serialization.XmlSerializer.resolveDeserializingType(XmlReader reader, XmlSerializationReader serialReader, Boolean soap12) 看看这个问题是否能回答你的问题:***.com/questions/1556874/… 另外,我发现 XmlSerializer 太挑剔了,不值得。我发现使用 Linq to XML 手动解析通常更容易。 【参考方案1】:

我同意上述 cmets 中 Will 关于 Linq-to-XML 方法更可靠的观点,但此链接可能对您有用:

Use multiple namespaces when deserializing with .NET XmlSerializer

在反序列化它以获取要读入的数据之前,您必须使用 Xml 属性对您的类进行属性化。我建议以另一种方式工作一段时间 - 尝试一遍又一遍地将您的类序列化为 XML,并在此过程中进行调整直到你得到你想要读入的准确输出,然后尝试读入“真实”数据。

【讨论】:

以上是关于在 Windows Phone 7 中解析 XML的主要内容,如果未能解决你的问题,请参考以下文章

使用 tcp 套接字在 windows phone 7 上解析 xml 内容

保存 xml 文件 Windows phone 7

Windows 7 Phone 文档数据库Rapid Repository正式发布

在 Windows Phone c# 中解析 JSON

如何使用`this解析C#(Windows Phone)中的JSONData。

计算 Windows Phone 中的 xml 节点