我尝试使用正确的XPath来获取基于条件的节点,该条件不是要使用C#中的XDocument.XPathSelectElement
方法选择的XPath的一部分。
所以,让我说我有以下XML。
<Root>
<Parties>
<Party>
<Person>
<Name>Bob Smith</Name>
</Person>
<Role>
<Type>Borrower</Type>
</Role>
</Party>
<Party>
<Person>
<Name>Mary Smith</Name>
</Person>
<Role>
<Type>CoBorrower</Type>
</Role>
</Party>
</Parties>
</Root>
所以我想得到的是
的价值//Root/Parties/Party/Person/Name
其中
//Root/Parties/Party/Role/Type
是借款人&#39;
根据我的研究,在发布问题之前,我认为以下内容可能有效,但没有运气。
XDocument xDoc = XDocument.Parse(xml);
var elm = xDoc.XPathSelectElement("//Root/Parties/Party[./Role/[Type = 'Borrower']/Person/Name");
但是这段代码给了我以下例外:
未处理的类型&#39; System.Xml.XPath.XPathException&#39;发生在System.Xml.dll中 附加信息:表达式必须评估为
node-set
。
答案 0 :(得分:2)
使用此XPath表达式:
//Root/Parties/Party[Role/Type/text() = 'Borrower']/Person/Name
它可以为您提供所需的结果
Bob Smith
答案 1 :(得分:0)
或试试这个:
//类型[=&#34;借款人&#34;] /父::节点()/前同辈::节点()//名称