我正在使用xpathdocument通过xpath表达式获取一些值,直到命名空间为止。
xml:
?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet href="vsstyle_xml.cgi" type="text/css"?>
<vs120data version="0x1210019" build="21.0.117" label="D21.00.117SAEN060223"
xmlns:html="http://www.w3.org/1999/xhtml" SIMATIC_VS_Escaped="1">
VS120 Data from 192.168.0.43 (MAC: 08:00:06:71:8C:EE) Time Sync Info: Source was PC:
PC=192.168.0.1 - TZ is GMT/UTC +1h. Last Synchronization: Feb 27, 2006, 16:41:08.
Current Timestamp: Feb 27, 2006, 16:44:14. HWVers: 0x34<html:title>VS120
Data from 192.168.0.43 (MAC: 08:00:06:71:8C:EE) at Feb 27, 2006, 16:44:14.
</html:title>
<Standard-Parameters>
Standard-Parameters
<Startup-Request>
...
<Images>
Images
<Scene>
Scene<html:img alt="html:img" src="data:image/png;base64...."
&#39;
c#代码:
XmlNamespaceManager mgr = new XmlNamespaceManager(nav.NameTable);
mgr.AddNamespace("html", "http://www.w3.org/1999/xhtml");
XPathNavigator hc = nav.SelectSingleNode("//html:img", mgr);
我这里只得到空节点。
当我使用xpath表达式解析sandart xpath时
parseXPath("/vs120data/Model/Images/Scene/html:img/@src");
我得到名称空间问题,缺少一些前缀的东西。
答案 0 :(得分:1)
显然,如果您需要转到src
属性,请更改:
nav.SelectSingleNode("//html:img", mgr)
以强>:
nav.SelectSingleNode("//html:img/@src", mgr)
由于您不需要属性本身,但需要其字符串值,假设nav
的类型为IXpathNavigable
,请使用:
nav.Evaluate("string(//html:img/@src)", mgr)