【问题标题】:Easiest way to read XML with attributes使用属性读取 XML 的最简单方法
【发布时间】:2011-01-26 04:09:34
【问题描述】:

我有一个想要阅读的 XML 文件(带有 xml 属性)。结构不变,但内容不变。

示例 XML:http://www.yr.no/place/Norway/Oslo/Oslo/Oslo/forecast.xml (该 URL 必须手动复制并粘贴到地址字段中,否则您似乎会得到 404。)

我无法使用此代码(并使用 XSD.EXE)从中制作 XSD:

XmlTextReader myXmlTextReader = new XmlTextReader("forecast.xml");
DataSet myDataSet = new DataSet();
myDataSet.ReadXml(myXmlTextReader);
myDataSet.WriteXmlSchema("forecast.xsd");

结果:

为不同的映射类型定义了列名'name'。

现在,想象一下,我对此很懒惰,不想花费整个晚上将 XML 手动映射到我的对象。我希望为我生成托管代码对象,以便我可以轻松读取数据。

我有什么选择?

...如果有人知道,XSD 转换错误消息是什么意思?

【问题讨论】:

  • 我在链接后收到 404 -- 你能发布一个重现错误的 XML 小样本吗?
  • “属性”是指 XML 属性吗?我怀疑不是。在这种情况下,您可能应该将标题更改为“从 XML 自动创建 XSD”之类的内容。但在我们看到您的代码之前,我们不知道问题所在
  • @peter 这意味着 xml 属性,我会更新内容以反映它 - 谢谢。 :)
  • 它不是 404 而是连接已重置 与服务器的连接在页面加载时已重置。 * 该网站可能暂时不可用或太忙。请稍后再试。 * 如果您无法加载任何页面,请检查您计算机的网络连接。 * 如果您的计算机或网络受到防火墙或代理的保护,请确保允许 Firefox 访问网络。

标签: c# .net xml


【解决方案1】:

如果您要处理 XML 属性,那么为什么不直接将 xml 加载到 XmlDocument 中。然后您可以访问各种节点和属性。

【讨论】:

  • 因为正确地迭代文档以填充对象模型需要大量编码。我希望能够使用 LINQ 查询对象模型,并且希望能够使用 MVVM 对其进行 DataBind,因此必须完全填充对象模型。
  • 不一定。对于复杂的对象模型,您还需要代码来导航对象模型,这与导航 DOM 树没有太大区别。..
【解决方案2】:

要回答关于 Xsd.exe 错误的最后一点,多个 location 元素存在问题。如果您保存 xml 并将第一个 location 元素重命名为 baselocation 之类的内容,那么它会转换好。

然后您可以手动修改 xsd 或生成的类来处理这个问题。

【讨论】:

  • 这解决了问题。我也想为 LINQ URL 给@37Stars 加分,但这个答案最适合我的问题。
猜你喜欢
  • 1970-01-01
  • 2012-01-04
  • 1970-01-01
  • 1970-01-01
  • 2017-09-15
  • 1970-01-01
  • 1970-01-01
  • 2022-01-13
相关资源
最近更新 更多