gpt4 book ai didi

c# - XDocument如何通过xpath搜索

转载 作者:行者123 更新时间:2023-11-30 22:07:26 26 4
gpt4 key购买 nike

我有一个如下所示的 xml 文件,我想找到属性“name”值等于“ImageListView”的节点

我写了下面的代码:

var nsmgr = new XmlNamespaceManager(new NameTable());
nsmgr.AddNamespace("asmv1", "urn:schemas-microsoft-com:asm.v1");
xpath = "//asmv1:assembly/dependency/dependentAssembly/assemblyIdentity[name='ImageListView']";
XElement ele = doc.XPathSelectElement(xpath, nsmgr);
ele.Remove();

但找不到任何东西。这里有什么问题吗?谢谢。

最佳答案

您的 XML 在此处具有默认命名空间:

<asmv1:assembly 
......
xmlns="urn:schemas-microsoft-com:asm.v2"
......>

因此,所有没有前缀的 XML 元素都在默认命名空间中考虑。您需要添加指向默认命名空间 URI 的前缀,并在 XPath 中使用它:

var nsmgr = new XmlNamespaceManager(new NameTable());
nsmgr.AddNamespace("asmv1", "urn:schemas-microsoft-com:asm.v1");
nsmgr.AddNamespace("d", "urn:schemas-microsoft-com:asm.v2");
xpath = "//asmv1:assembly/d:dependency/d:dependentAssembly/d:assemblyIdentity[@name='ImageListView']";
XElement ele = doc.XPathSelectElement(xpath, nsmgr);
ele.Remove();

更新:

稍微修复了 XPath。您需要使用 @ 指向属性:... [@name='ImageListView']

关于c# - XDocument如何通过xpath搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23009957/

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