【问题标题】:Read XML with VB.net用 VB.net 读取 XML
【发布时间】:2014-10-01 11:35:49
【问题描述】:

我正在努力在 VB 中读取我的 XML 并获取我想要的数据。

<?xml version="1.0" encoding="UTF-8"?> 
    <Install>
        <Package>
            <Name>Office2010</Name>
            <Path>C:\Windows\Office</Path>
            <Default>0</Default>
        </Package>
        <Package>
            <Name>CCleaner</Name>
            <Path>C:\Windows\Cleaner</Path>
            <Default>0</Default>
        </Package>
    </Install>

我试图一次读取整个节点,因此我可以获取它的所有值。

package.Name
package.Path
package.Default

这可能吗?我现在为此挣扎了2个多小时。 谢谢。

【问题讨论】:

    标签: xml vb.net visual-studio-2010


    【解决方案1】:

    您可以使用简单的 For Each 循环和 XML 文字,例如:

    ' or load the XML with XDocument.Load(...) '
    Dim xml = <Install>
                <Package>
                    <Name>Office2010</Name>
                    <Path>C:\Windows\Office</Path>
                    <Default>0</Default>
                </Package>
                <Package>
                    <Name>CCleaner</Name>
                    <Path>C:\Windows\Cleaner</Path>
                    <Default>0</Default>
                </Package>
            </Install>
    
    ' If you used XDocument.Load(...), use xml.Root.<Package> instead '
    For Each package In xml.<Package>
        Console.WriteLine(package.<Name>.Value)
        Console.WriteLine(package.<Path>.Value)
        Console.WriteLine(package.<Default>.Value)
    Next
    

    【讨论】:

    • 我真的无法让它工作。您的示例按预期工作,但是当我尝试读取我的 XML 文件时,我收到一个错误,或者它认为我的 .xml 为空。有人可以为我提供 XDocument.Load() 的快速 sn-p 吗?我认为我做错了。
    • 如果您使用XDocument.Load(yourpath) 加载XML,请使用xml.Root.&lt;Package&gt; 而不是xml.&lt;Package&gt;
    【解决方案2】:
    // parse your XML into an XDocument
    Dim doc As XDocument = XDocument.Parse(xml)
    // get "Install" element
    Dim install As XElement = doc.Root
    
    // iterate over "Package" elements in install
    For Each package As XElement In install.Elements("Package")
        Dim name As String = package.Element("Name").Value
        Dim path As String = package.Element("Path").Value
        Dim def As String = package.Element("Default").Value
    Next
    

    【讨论】:

    • 嗨 Saeb,我得到:根级别的数据无效。第 1 行,第 1 位。我很愚蠢?
    • @Jente,发布您的完整 XML。
    • 其实就是完整的XML,除了版本。我已将其添加到我的帖子中。
    • @Jente,声明没有问题,所以它必须是如何生成/写入 XML 文件的问题。看看this
    • 嗯,试过了,但没有运气。我什至创建了一个新的 XML(我在记事本中创建了它),同样的错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-09
    • 1970-01-01
    • 2014-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多