喂,
我正在尝试使用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,所以我可以将它与目标相关联,这样我知道当我通过文档点击该ID时要使用哪个图像。
有什么想法吗?
答案 0 :(得分:2)
使用某个键(例如ns
)将默认命名空间添加到命名空间管理器:
nsm.AddNamespace("ns", ...)
然后您可以使用该键定位此默认命名空间的节点:
.. SelectNodes("//ns:Relationship", nsm);