C# 如何获取二级子节点的XML值
我有一个xml文件,需要使用C#从第二级子节点提取InnerXML。下面是我的XML的一个片段C# 如何获取二级子节点的XML值,c#,xml,xml-parsing,C#,Xml,Xml Parsing,我有一个xml文件,需要使用C#从第二级子节点提取InnerXML。下面是我的XML的一个片段 <joblisting:department>Supply</joblisting:department> <guid isPermaLink="true">https://www.governmentjobs.com/careers/ocso/Jobs/2594527</guid> <joblisting:categories> &
<joblisting:department>Supply</joblisting:department>
<guid isPermaLink="true">https://www.governmentjobs.com/careers/ocso/Jobs/2594527</guid>
<joblisting:categories>
<joblisting:category xmlns:joblisting="http://www.neogov.com/namespaces/JobListing" xmlns:atom="http://www.w3.org/2005/Atom">
<CategoryCode>ClericalDataEntry</CategoryCode>
<Category>Clerical & Data Entry</Category>
</joblisting:category>
</joblisting:categories>
供应
https://www.governmentjobs.com/careers/ocso/Jobs/2594527
神职人员记录
文书及;数据输入
我需要得到Category元素的值
我试着使用这个C代码:
XmlNode t=rssNode.LastChild;
if(t.HasChildNodes)
{
对于(int i=0;i
但它返回整个子树作为
<category>
<CategoryCode>ClericalDataEntry</CategoryCode>
<Category>Clerical & Data Entry</Category>
</category
神职人员记录
文书及;数据输入
现在,您正在获取整个t.ChildNodes[i]
,您只需要它的一个子节点
因此,根据到目前为止的情况,您需要再次深入查看if(t.ChildNodes[i].haschilds)
并循环这些内容,检查t.ChildNodes[i].ChildNodes[j].Name==“Category”
,然后获取其t.ChildNodes[i].ChildNodes[j].Value
但这是一种黑客行为,最终会产生嵌套循环(if…for…if…for),因此可能需要使用递归。或者,最好使用XmlSerializer并将数据映射到对象模型 读了mjung的评论后,我更深入了一点,找到了一个更干净的方法来实现我的目标。我想出了下面的代码来获取我的数据
rssSubNode = rssNode.SelectSingleNode("joblisting:categories", nsmgr);
if (rssSubNode.HasChildNodes)
{
rssSubNode = rssSubNode.SelectSingleNode("joblisting:category", nsmgr);
rssSubNode = rssSubNode.SelectSingleNode("Category");
string category = rssSubNode.InnerXml;
string Category = "<category>" + category + "</category>";
sb.AppendLine(Category);
}
rssSubNode=rssNode.SelectSingleNode(“作业列表:类别”,nsmgr);
if(rssSubNode.HasChildNodes)
{
rssSubNode=rssSubNode.SelectSingleNode(“作业列表:类别”,nsmgr);
rssSubNode=rssSubNode.SelectSingleNode(“类别”);
字符串类别=rssSubNode.InnerXml;
字符串Category=“”+Category+”;
b.附加线(类别);
}
谢谢@mjung的帮助,您的评论启发我找到了一个更干净的解决方案。很高兴为您提供帮助。我喜欢你的想法!
rssSubNode = rssNode.SelectSingleNode("joblisting:categories", nsmgr);
if (rssSubNode.HasChildNodes)
{
rssSubNode = rssSubNode.SelectSingleNode("joblisting:category", nsmgr);
rssSubNode = rssSubNode.SelectSingleNode("Category");
string category = rssSubNode.InnerXml;
string Category = "<category>" + category + "</category>";
sb.AppendLine(Category);
}