gpt4 book ai didi

xml - 使用带有 XPATH 的 vb.net 读取 XML 属性

转载 作者:行者123 更新时间:2023-12-03 16:18:26 26 4
gpt4 key购买 nike

我正在尝试创建一个读取 appv list 文件属性的应用程序。我使用 vb.net 2012 作为应用程序。

我想使用 xpath 从 list 文件中读取属性:“VersionId”和“PackageId”,但我无法理解 XPATH 的工作方式。

<?xml version="1.0" encoding="UTF-8"?>
<Package xmlns:appv1.1="http://schemas.microsoft.com/appv/2013/manifest" xmlns:appv="http://schemas.microsoft.com/appv/2010/manifest" xmlns="http://schemas.microsoft.com/appx/2010/manifest" appv:IgnorableNamespaces="appv1.1" IgnorableNamespaces="appv appv1.1">
<Identity appv:VersionId="79cdb3a0-8f7d-416d-828e-003fe3125eb2" appv:PackageId="64ce44eb-5255-4514-bb74-e14ae393ae9a" Version="0.0.0.4" Publisher="CN=Reserved" Name="Reserved"/>

这是我现在拥有的:

Dim xml As New XmlDocument
xml.Load(xmlFileName)
Dim nsmgr As New XmlNamespaceManager(xml.NameTable)
nsmgr.AddNamespace("appv", "http://schemas.microsoft.com/appv/2010/manifest")
PackageID = xml.SelectSingleNode("//Package/Identity[@name='appv:PackageId']", nsmgr).InnerText
VersionID = xml.SelectSingleNode("//Package/Identity[@name='appv:VersionId']'", nsmgr).InnerText

请帮忙..这让我完全疯了..

最佳答案

默认命名空间不是空白,因此您必须在 XPath 表达式中为默认命名空间定义和使用显式命名空间前缀。例如:

Dim xml As New XmlDocument
xml.Load(xmlFileName)
Dim nsmgr As New XmlNamespaceManager(xml.NameTable)
nsmgr.AddNamespace("appv", "http://schemas.microsoft.com/appv/2010/manifest")
nsmgr.AddNamespace("appx", "http://schemas.microsoft.com/appx/2010/manifest")
PackageID = xml.SelectSingleNode("//appx:Package/appx:Identity[@name='appv:PackageId']", nsmgr).InnerText
VersionID = xml.SelectSingleNode("//appx:Package/appx:Identity[@name='appv:VersionId']'", nsmgr).InnerText

换句话说,XML 文档中没有命名空间前缀意味着“默认命名空间”,而 XPath 查询中没有命名空间前缀意味着“空白命名空间”。

关于xml - 使用带有 XPATH 的 vb.net 读取 XML 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23605180/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com