XmlNode的Selectnodes找不到Relationship节点

本文关键字:Relationship 节点 找不到 Selectnodes XmlNode | 更新日期: 2023-09-27 18:08:57

Hullo,

我正在尝试使用XmlNode的SelectNodes方法来获取下面的ID信息。我需要ID来将它与来自它的图像引用联系起来。我以前曾成功地将selectnodes与命名空间一起使用过,但我认为这与关系的命名空间有关,因为它在这个节点中定义了命名空间。

<pkg:package xmlns:pkg="http:blah">
  <pkg:part pkg:name="/_rels/.rels" pkg:contentType="blah" pkg:padding="512">...</pkg:part>
  <pkg:part pkg:name="blah" pkg:contentType="blah" pkg:padding="256">
    <pkg:xmlData>
      <Relationships xmlns="http:blah">
        <Relationship Id="rId8" Type="http:blah" Target="media/image2.png/>
        <Relationship Id="rId3" Type="http:blah" Target="media/image3.png/>

我尝试过但没有结果的东西:

...SelectNodes("//pkg:package/pkg:part/pkg:xmlData/Relationships/Relationship[@Type='blah'", nsm);  
...SelectNodes("//Relationships", nsm);  
...SelectNodes("//xmlns:Relationships", nsm); 
...SelectNodes("//Relationship", nsm);  
...SelectNodes("//Relationship[@Type='http:blah'], nsm);   

等等。我希望这会有所帮助,但没有奏效。

这是我的nsm设置。。。

nsm = new XmlNamespaceManager(xmldocin.NameTable);
            nsm.AddNamespace ("w", "http://schemas.openxmlformats.org/wordprocessingml/2006/main");
            nsm.AddNamespace("pkg", "http://schemas.microsoft.com/office/2006/xmlPackage");
            nsm.AddNamespace("r", "http://schemas.openxmlformats.org/officeDocument/2006/relationships");
            nsm.AddNamespace("a", "http://schemas.openxmlformats.org/drawingml/2006/main");
            nsm.AddNamespace("pic", "http://schemas.openxmlformats.org/drawingml/2006/picture");
            nsm.AddNamespace("wp", "http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing");

如果我在select查询中使用pkg:xmlData,那么就可以正常工作,所以我知道我的其余代码也可以正常工作。问题特别出在"关系"节点上。

我需要的实际信息是ID,这样我就可以将其与目标关联起来,这样我在浏览文档时就知道该使用哪个图像。

有什么想法吗?

XmlNode的Selectnodes找不到Relationship节点

使用一些键(例如ns(将默认命名空间添加到命名空间管理器中:

nsm.AddNamespace("ns", ...)

然后,您可以使用以下密钥来定位此默认名称空间的节点:

.. SelectNodes("//ns:Relationship", nsm);