从vb.net元素中的单个xml属性中收集值

从vb.net元素中的单个xml属性中收集值,xml,vb.net,xpath,Xml,Vb.net,Xpath,几天来,我一直在想如何让这一点起作用(由于你在谷歌上搜索了太多问题的组合,我又一次看到了同样的文章) 我看过 最后一个似乎为我指明了正确的方向,但在运行DWRoelands指定的代码时,我收到控制台输出的“System.Collections.Generic.List`1[System.String]” 请参见下面的XML,我需要从/Files/File/Link元素中的HREF属性中提取,并且仅针对作为descriptor.ovf列出的文件(我运行此操作的第二个XML文件中有另一个VMDK列出

几天来,我一直在想如何让这一点起作用(由于你在谷歌上搜索了太多问题的组合,我又一次看到了同样的文章)

我看过 最后一个似乎为我指明了正确的方向,但在运行DWRoelands指定的代码时,我收到控制台输出的“System.Collections.Generic.List`1[System.String]”

请参见下面的XML,我需要从/Files/File/Link元素中的HREF属性中提取,并且仅针对作为descriptor.ovf列出的文件(我运行此操作的第二个XML文件中有另一个VMDK列出的文件)

谢谢

XML代码段:

试验vAPP
1.
假的

首先加载文件,如果使用XElement,则可以使用文本进行测试

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

    'for testing
    xe = <VApp href="https://#####/api/vApp/vapp-##">
             <Link rel="down"/>
             <Description>Test vAPP</Description>
             <Tasks>
                 <Task cancelRequested="false">
                     <Link rel="task:cancel"/>
                     <Progress>1</Progress>
                     <Details/>
                 </Task>
             </Tasks>
             <Files>
                 <File bytesTransferred="0" size="-1" name="descriptor.ovf">
                     <Link rel="upload:default" href="https://server/transfer/descriptor.ovf"/>
                 </File>
             </Files>
             <InMaintenanceMode>false</InMaintenanceMode>
         </VApp>


    ' to save file
    ' xe.Save(yourpath)
“将您的路径设置为String=“此处的您的路径”
弱xe-As-XElement
'从文件加载
'xe=XElement.Load(您的路径)
"测试",
xe=
试验vAPP
1.
假的
'保存文件
'xe.Save(您的路径)
现在已经加载了它,可以很容易地选择所需的元素

已编辑

    Dim dovf As IEnumerable = (From el In xe...<Files>
                               Where el.<File>.@name = "descriptor.ovf"
                               Select el.<File>.<Link>.@href)

    For Each s As String In dovf
        Stop
    Next
Dim dovf作为IEnumerable=(从el到xe)。。。
其中el..@name=“descriptor.ovf”
选择el…@href)
对于dovf中的每个字符串
停止
下一个
基于上面的整个xml示例,我不得不将其添加为程序的第一行

Imports <xmlns="http://www.vmware.com/vcloud/v1.5">
导入
。确保任何xml数组都有多个项,以便正确生成架构。以下是我的结果:

“”
_
部分公共类VApp
私有链接字段作为VAppLink
私有描述符字段为字符串
私有任务字段()作为VAppTask
私有文件字段()作为VAppFile
Private inMaintenanceModeField为布尔值
私有hrefField作为字符串
'''
公共属性链接()作为VAppLink
得到
给我回林克菲尔德
结束
设置(值为VAppLink)
Me.linkField=值
端集
端属性
'''
公共属性描述()为字符串
得到
Return Me.descriptionField
结束
设置(值为字符串)
Me.descriptionField=值
端集
端属性
'''
_
公共属性Tasks()作为VAppTask()
得到
给我回电话,tasksField
结束
设置(值为VAppTask())
Me.tasksField=值
端集
端属性
'''
_
公共属性文件()作为VAppFile()
得到
返回Me.filefield
结束
设置(值为VAppFile())
Me.filesField=值
端集
端属性
'''
公共属性InMaintenanceMode()为布尔值
得到
返回我。inMaintenanceModeField
结束
设置(值为布尔值)
Me.inMaintenanceModeField=值
端集
端属性
'''
_
公共属性href()作为字符串
得到
还我,赫雷菲尔德
结束
设置(值为字符串)
Me.hrefield=值
端集
端属性
末级
'''
_
部分公共类VAppLink
私有字段作为字符串
'''
_
公共属性rel()作为字符串
得到
把雷菲尔德还给我
结束
设置(值为字符串)
Me.relField=值
端集
端属性
末级
'''
_
部分公共类VAppTask
私有链接字段作为VAppTaskLink
作为字节的专用字段
作为对象的私有详细信息字段
Private cancelRequestedField为布尔值
'''
公共属性链接()作为VAppTaskLink
得到
给我回林克菲尔德
结束
设置(值为VAppTaskLink)
Me.linkField=值
端集
端属性
'''
公共属性Progress()作为字节
得到
返回我的位置
结束
设置(值为字节)
Me.progressField=值
端集
端属性
'''
公共属性详细信息()作为对象
得到
返回我的地址
结束
设置(值作为对象)
Me.detailsField=值
端集
端属性
'''
_
公共属性cancelRequested()为布尔值
得到
Return Me.cancelRequestedField
结束
设置(值为布尔值)
Me.cancelRequestedField=值
端集
端属性
末级
'''
_
部分公共类VAppTaskLink
私有字段作为字符串
'''
_
公共属性rel()作为字符串
得到
把雷菲尔德还给我
结束
设置(值为字符串)
Me.relField=值
端集
端属性
末级
'''
_
部分公共类VAppFile
私有链接字段作为VAppFileLink
Private ByTestTransferredField作为字节
私有sizeField作为SByte
私有名称字段作为字符串
'''
公共属性链接()作为VAppFileLink
得到
给我回林克菲尔德
结束
设置(值为VAppFileLink)
Me.linkField=值
端集
端属性
'''
_
公共属性ByTestTransferred()作为字节
得到
Return Me.bytesttransferredfield
结束
设置(值为字节)
Me.ByTestTransferredField=值
端集
端属性
'''
_
公共属性大小()为SByte
得到
返回