【问题标题】:How to read multiple xml elements from a file?如何从文件中读取多个 xml 元素?
【发布时间】:2013-03-22 11:09:16
【问题描述】:

大家好,我有这个 xml 文档,我想提取第一个或第二个应用程序文件路径和文件名等。我试过了

DocumentElement.SelectSingleNode("/InstallerList/Installer/File_Path").InnerText

但我只得到第一个应用程序信息,从来没有第二个,我试着玩弄

DocumentElement.SelectNodes("//Installer")

并在其末尾添加一个整数,以便我可以循环浏览,但它似乎不喜欢那样。有什么想法吗?

<?xml version="1.0" encoding="utf-8"?>
<InstallerList>
 <Installer Name="First Application">
   <FilePath>C:\</FilePath>
   <Third_Parameter>etc</Third_Parameter>
   <Forth_Parameter>etc</Forth_Parameter>
 </Installer>
 <Installer Name="Second Application">
   <FilePath>etc</FilePath>
   <Third_Parameter>etc</Third_Parameter>
   <Forth_Parameter>etc</Forth_Parameter>
 </Installer>
</InstallerList>

【问题讨论】:

    标签: xml vb.net xmldocument


    【解决方案1】:

    如果您只想选择一个 FilePath 元素,给定一些已知的键值,例如安装程序的 Name 属性,您可以在 XPath 中添加一个条件来缩小结果范围,如下所示:

    DocumentElement.SelectSingleNode("/InstallerList/Installer[@Name='First Application']/FilePath").InnerText
    

    或者,您可以简单地选择所有 FilePath 元素,然后循环遍历它们,如下所示:

    For Each node As XmlNode In DocumentElement.SelectNodes("/InstallerList/Installer/FilePath")
        Dim path As String = node.InnerText
        ' ...
    Next
    

    【讨论】:

    • 好的,感谢您对初学者的帮助,当我尝试 DocumentElement.SelectSingleNode("/InstallerList/Installer[@Name="+app+"]/FilePath").InnerText 其中 app 是一个包含我得到一个表达式的名称属性的内容必须评估为节点集错误有什么想法吗?
    • 它对我有用。您是否忘记了 app 值周围的开始和结束单引号?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-28
    • 2016-05-18
    • 2021-10-22
    • 2021-09-07
    相关资源
    最近更新 更多