以下是我的XML:
<Profile>
<_nObjectID>1</_nObjectID>
<_sObjectName>ABC</_sObjectName>
<_sObjectType>10</_sObjectType>
</Profile>
<Profile>
<_nObjectID>2</_nObjectID>
<_sObjectName>DEF</_sObjectName>
<_sObjectType>20</_sObjectType>
</Profile>
<Profile>
<_nObjectID>3</_nObjectID>
<_sObjectName>GHI</_sObjectName>
<_sObjectType>50</_sObjectType>
</Profile>
我想知道这组配置文件中 _nObjectID = 2 的 _sObjectName 是什么。我们如何使用XPath找到它?
到目前为止,我尝试了以下内容:
string name = productsXML.XPathSelectElement("//Profile/_nObjectID").Value;
但结果只给了我 _nObjectID 。如何在 _nObjectID 下获取 _sObjectName ?
答案 0 :(得分:2)
这可能会为你做到这一点
var rslt = xdc.Descendants("Profile")
.Where(x => x.Descendants("_nObjectID").FirstOrDefault().Value == "2")
.Select(q => q.Descendants("_sObjectName"));
如果您只想要_sObjectName
的值,即DEF
,那么只需要像这样调用值
var rslt = xdc.Descendants("Profile")
.Where(x => x.Descendants("_nObjectID").FirstOrDefault().Value == "2")
.Select(q => q.Descendants("_sObjectName").FirstOrDefault().Value);
答案 1 :(得分:0)
我不知道你正在使用的库的具体细节。但是既然你要求使用xpath方法,我会假设有一个完整的xml支持。
此查询将获取_nObjectId 2之后的_sObjectName:
//资料[_nObjectID /文本()= 2] / _ sObjectName
在此尝试http://www.freeformatter.com/xpath-tester.html#ad-output
如果你需要循环它,我建议你在传递xpath查询之前进行字符串格式化!