【发布时间】:2011-06-13 02:41:46
【问题描述】:
我有以下 XML 文档,我想将其解析为 DataSet。
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<Response Status="OK">
<Item>
<Field Name="ID">767147519</Field>
<Field Name="Name">Music</Field>
<Field Name="Path">Family\Music</Field>
<Field Name="Type">Playlist</Field>
</Item>
</Response>
我想获取 ID、Name 和 Path 的属性值。
以下是我尝试过的:
Dim loaded As XDocument = XDocument.Load(uriString)
Dim name = From c In loaded.Descendants("Item") Select c
For Each result In name
Dim str1 = result.Attribute("ID").Value 'Returns Nothing and causes a validation error
Dim str2 = result.Value ' Returns all the attribute values in one long string (ie "767147519MusicFamilyPlaylist")
Next
任何帮助将不胜感激。
谢谢,
马特
编辑:
按照下面的答案之一,我一直在尝试在我的 Linq 中实现匿名类型,但是我一直遇到错误
对象引用未设置为 对象的实例。
我的更新代码如下:
Dim name = From c In loaded.Descendants("Item") Select c Select sID = c.Element("Field").Attribute("Name").Value, sName = c.Attribute("ID").Value.FirstOrDefault
Dim Id As String = String.Empty
For Each result In name
Id = result.sID
Next
我认为这个错误意味着无法定位属性(“ID”),所以我尝试了几种类似结果的变体。
有没有人能够确定我哪里出错并指出我正确的方向。
谢谢,
马特
【问题讨论】:
-
我已经更新了我的问题以显示我尝试实现匿名类型,我遇到了一个对象引用错误(请参阅更新的问题),任何帮助确定此错误的原因将不胜感激。
-
另外,添加了一个新标签,该应用程序在 VB.Net 中,因此 VB 中的示例将不胜感激,但任何帮助都很棒。
-
你说你认为这个错误意味着无法定位属性“ID”,但问题是没有属性“ID”。有一个名为“Field”的元素和一个名为“Name”的属性。 Name 属性的值为“ID”。您的代码试图做错事。您需要获取
.Attribute("Name").Value == "ID"所在的 Field 元素的.Value。不是“ID”属性的值,因为没有这样的东西。
标签: wpf vb.net .net-3.5 linq-to-xml