[英]Select XMLNode with XPath
I have seen multiple post with this example but for some reason all options I try return an empty XmlNodeList. 我在该示例中看到了多个帖子,但是由于某些原因,我尝试使用所有选项返回一个空的XmlNodeList。 What am I missing?
我想念什么?
My XML: 我的XML:
<string xmlns='http://ws.jobboard.com/resumes/'>
<Packet>
<Errors />
<PageNumber>1</PageNumber>
<SearchTime>02/25/2014 10:11:47</SearchTime>
<FirstRec>1</FirstRec>
<LastRec>100</LastRec>
<Hits>206816</Hits>
<MaxPage>40</MaxPage>
<Results>
<ResumeResultItem_V3>
<ContactEmail></ContactEmail>
<ContactName>Lisa Yada</ContactName>
<HomeLocation>US-CO-Lakewood</HomeLocation>
<LastUpdate>2014/2/24</LastUpdate>
<ResumeTitle>Web Design & Developement</ResumeTitle>
<JobTitle>Web Design & Developement</JobTitle>
<RecentEmployer>Some Company</RecentEmployer>
<RecentJobTitle>Web Design</RecentJobTitle>
<RecentPay>0</RecentPay>
<ResumeID>RHV47X78Z5CN56</ResumeID>
<UserDID>UHT6R86LL8C581</UserDID>
<ContactEmailMD5>93ce261b843f58962f9</ContactEmailMD5>
<ActionType />
<HighestDegree>Bachelor's Degree</HighestDegree>
<MonthsOfExperience>40</MonthsOfExperience>
<LastActivity>2/24/2014 1:22:19 PM</LastActivity>
</ResumeResultItem_V3> ...
and my code: 和我的代码:
XmlDocument jobsdoc = new XmlDocument();
jobsdoc.LoadXml(xmlstring);
XmlNodeList xnList = jobsdoc.SelectNodes("/string/Packet/Results/ResumeResultItem_V3");
foreach (XmlNode xn in xnList)
{
DataRow dr = table.NewRow();
dr["ContactName"] = xn["ContactName"].InnerText;
dr["ResumeTitle"] = xn["ResumeTitle"].InnerText;
...
table.Rows.Add(dr);
}
return table;
I have tried many variations of "/string/Packet/Results/ResumeResultItem_V3" to no avail. 我已经尝试了许多“ / string / Packet / Results / ResumeResultItem_V3”的变体,但无济于事。 The ws is a third party so I have no control over the format of the XML.
ws是第三方,因此我无法控制XML的格式。 Thanx in advance.
提前感谢。
You need a namespacemanager in your SelectNodes call because your xml root node has a namespace http://ws.jobboard.com/resumes/
您的SelectNodes调用中需要一个namespacemanager ,因为您的xml根节点具有一个命名空间
http://ws.jobboard.com/resumes/
Notice that your XPath needs to explicitely use the namespace-alias. 请注意,您的XPath需要明确使用命名空间别名。
NameTable nt = new NameTable();
XmlNamespaceManager nsmgr = new XmlNamespaceManager(nt);
nsmgr.AddNamespace("r", "http://ws.jobboard.com/resumes/");
XmlDocument jobsdoc = new XmlDocument(nt);
jobsdoc.LoadXml(xmlstring);
var xnList = jobsdoc.SelectNodes(
"/r:string/r:Packet/r:Results/r:ResumeResultItem_V3",
nsmgr);
foreach (XmlNode xn in xnList)
{
// rest of your code
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.