获取单个 XML 属性值

Get single XML Attribute Value

给定以下 XML -

<Response>
  <Item name="ItemA" />
</Response>

如何获取名称属性的值?

我尝试了几种方法都没有成功,这是最后一次尝试- (注意写'xml'的内容到控制台显示上面的XML)

Dim doc As XDocument = XDocument.Load(xml)
Dim result = From x In doc.Descendants("Item") Select x.Attribute("Name").Value
Console.WriteLine(result)

结果输出:"System.Linq.Enumerable.WhereSelectEnumerableIterator[Of System.Xml.Linq.XElement, String]"

谢谢,

对于确切的 XML 结构,您可以执行以下操作:

Dim result =  doc.Root.Element("Item").Attribute("name").Value

请注意 Element() returns 给定名称的单个子元素。

如果涉及 XML 命名空间,正如您在下面的评论中提到的,您需要结合使用 XNamespace 和元素的本地名称来引用 Item元素 :

Dim path As XNamespace = "path"
Dim result = doc.Root.Element(path+"Item").Attribute("name").Value

我更喜欢 XElement,输入更少。

    Dim xe As XElement
    ' to load from a file
    ' Dim yourpath As String = "your path here"
    ' Dim xe As XElement = XElement.Load(yourpath)

    ' for testing
    xe = <Response>
             <Item name="ItemA"/>
         </Response>

    Dim result As String = xe.<Item>.@name '<<<<<<<<<<<<<<<<<<< answer