Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何获取此元素的xpath?_C#_Xml_Xpath - Fatal编程技术网

C# 如何获取此元素的xpath?

C# 如何获取此元素的xpath?,c#,xml,xpath,C#,Xml,Xpath,我需要返回dependentAssembly的codebase属性(即asmv1:assembly=>dependency=>dependentAssembly(第一个)=>codebase属性) 以下是XML文件: <?xml version="1.0" encoding="utf-8"?> <asmv1:assembly xsi:schemaLocation="urn:schemas-microsoft-com:asm.v1 assembly.adaptive.xsd" m

我需要返回dependentAssembly的codebase属性(即asmv1:assembly=>dependency=>dependentAssembly(第一个)=>codebase属性)

以下是XML文件:

<?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly xsi:schemaLocation="urn:schemas-microsoft-com:asm.v1 assembly.adaptive.xsd" manifestVersion="1.0" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns="urn:schemas-microsoft-com:asm.v2" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xrml="urn:mpeg:mpeg21:2003:01-REL-R-NS" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:co.v1="urn:schemas-microsoft-com:clickonce.v1" xmlns:co.v2="urn:schemas-microsoft-com:clickonce.v2">
  <assemblyIdentity name="program.application" version="3.4.95.1045" publicKeyToken="98ecb8aa8cf73f16" language="neutral" processorArchitecture="msil" xmlns="urn:schemas-microsoft-com:asm.v1" />
  <description asmv2:publisher="publisher" asmv2:product="Magical Christmas Land" xmlns="urn:schemas-microsoft-com:asm.v1">Magical Christmas Land</description>
  <deployment install="true" minimumRequiredVersion="3.4.95.1045" co.v1:createDesktopShortcut="true">
    <subscription>
      <update>
        <beforeApplicationStartup />
      </update>
    </subscription>
   </deployment>
  <compatibleFrameworks xmlns="urn:schemas-microsoft-com:clickonce.v2">
   <framework targetVersion="4.5.2" profile="Client" supportedRuntime="4.0.30319" />
   <framework targetVersion="4.5.2" profile="Full" supportedRuntime="4.0.30319" />
  </compatibleFrameworks>
  <dependency>
    <dependentAssembly dependencyType="install" codebase="3.0.8\program.exe.manifest" size="214085">
      <assemblyIdentity name="program.exe" version="3.0.8" publicKeyToken="48ecb8aa8cf73f16" language="neutral" processorArchitecture="msil" type="win32" />
      <hash>
        <dsig:Transforms>
          <dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
        </dsig:Transforms>
        <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" />
        <dsig:DigestValue>rawr</dsig:DigestValue>
      </hash>
    </dependentAssembly>
  </dependency>
这是可行的,但它非常丑陋:

var childNode = node.ChildNodes
                            .OfType<XmlElement>()
                            .First(n => n.LocalName == "dependency")
                            .ChildNodes[0]
                            .Attributes["codebase"].InnerText;
var childNode=node.ChildNodes
第()类
.First(n=>n.LocalName==“依赖关系”)
.ChildNodes[0]
.Attributes[“codebase”].InnerText;

依赖项
继承默认命名空间,URI为
urn:schemas microsoft com:asm.v2

var nsmgr = new XmlNamespaceManager(xmlDoc.NameTable);
nsmgr.AddNamespace("asmv1", "urn:schemas-microsoft-com:asm.v1");
nsmgr.AddNamespace("asmv2", "urn:schemas-microsoft-com:asm.v2");

var node = xmlDoc.DocumentElement.SelectSingleNode(@"/asmv1:assembly/asmv2:dependency", nsmgr); 

您是否尝试过
asmv1:assembly/asmv1:dependency
?这可能不起作用,但你永远不知道。@G0dsquad不起作用,谢谢!作为参考,最后的xpath是
/asmv1:assembly/asmv2:dependency/asmv2:dependentAssembly[1]/@codebase
var nsmgr = new XmlNamespaceManager(xmlDoc.NameTable);
nsmgr.AddNamespace("asmv1", "urn:schemas-microsoft-com:asm.v1");
nsmgr.AddNamespace("asmv2", "urn:schemas-microsoft-com:asm.v2");

var node = xmlDoc.DocumentElement.SelectSingleNode(@"/asmv1:assembly/asmv2:dependency", nsmgr);