读取带属性的XML文件的最简单方法

3
我有一个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小样本? - Cameron
1
“attribute” 是指 XML 属性吗?我怀疑不是。如果是这样,也许你应该将标题改为“从 XML 自动创建 XSD”。但在我们看到你的代码之前,我们不知道问题出在哪里。 - peter.murray.rust
@peter 这意味着 XML 属性,我会更新内容以反映它 - 谢谢。 :) - Tedd Hansen
不是404错误,而是连接被重置了。页面加载时与服务器的连接被重置。可能是网站暂时不可用或过于繁忙,请稍后再试。如果无法加载任何页面,请检查您计算机的网络连接。如果您的计算机或网络受到防火墙或代理的保护,请确保Firefox被允许访问Web。 - peter.murray.rust
2个回答

2

如果你需要获取XML属性,为什么不直接将XML文件加载到XmlDocument中呢?这样你就可以访问各种节点和属性了。


因为正确迭代文档以填充对象模型需要大量编码。我希望能够使用LINQ查询对象模型,并能够使用MVVM进行数据绑定,因此对象模型必须完全填充。 - Tedd Hansen
并非一定如此。对于复杂的对象模型,您需要编写代码来浏览对象模型,这与浏览DOM树并没有太大区别。 - vtd-xml-author

1
关于 Xsd.exe 错误的最后一点,它遇到了多个位置元素的问题。如果您保存 XML 并将第一个位置元素重命名为像baselocation这样的名称,那么它将能够正确转换。
然后,您可以手动修改 xsd 或生成的类来处理此问题。

这解决了问题。我也想给@37Stars一些积分,因为他提供了LINQ URL,但是这个答案最适合我的问题。 - Tedd Hansen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接