C# 将LinqToXml表达式转换为XPath
我有一个linq表达式,需要转换为XPath select元素:C# 将LinqToXml表达式转换为XPath,c#,xml,linq,xpath,C#,Xml,Linq,Xpath,我有一个linq表达式,需要转换为XPath select元素: XElement transIdElement = (from criteria in searchCriteria.Descendants("CRITERIA") where criteria.Element("DataPointName).Value == "TransactionNumber" select cri
XElement transIdElement = (from criteria in searchCriteria.Descendants("CRITERIA")
where criteria.Element("DataPointName).Value == "TransactionNumber"
select criteria.Element("CriteriaComparisonValue")).FirstOrDefault();
我试着用这个:
var transIdElement = searchCriteria.XPathSelectElement("//CRITERIA/DataPointName[text() = 'TransactionNumber']/CriteriaComparisonValue");
但我得到的结果是空的
XML示例是:
<SEARCH>
<ADVANCED_CRITERIA>
<CRITERIA>
<DataPointName>TransactionNumber</DataPointName>
<CriteriaComparisonValue>12457845</CriteriaComparisonValue>
</CRITERIA>
</ADVANCED_CRITERIA>
</SEARCH>
交易编号
12457845
使用。
访问父节点()
,然后重试
//标准/DataPointName[text()='TransactionNumber']/../CriteriaComparisonValue
LINQpad中的快速测试:
var f = @"c:\temp\x\a.xml";
var searchCrit = XDocument.Load(f);
searchCrit.XPathSelectElement("//CRITERIA/DataPointName[text() = 'TransactionNumber']/../CriteriaComparisonValue").Value.Dump();
产生
12457845
使用
。
访问父节点()
,然后重试
//标准/DataPointName[text()='TransactionNumber']/../CriteriaComparisonValue
LINQpad中的快速测试:
var f = @"c:\temp\x\a.xml";
var searchCrit = XDocument.Load(f);
searchCrit.XPathSelectElement("//CRITERIA/DataPointName[text() = 'TransactionNumber']/../CriteriaComparisonValue").Value.Dump();
产生
12457845
void Main()
{
字符串xml=@“
交易编号
12457845
";
var searchCriteria=XElement.Parse(xml);
searchCriteria.XPathSelectElements(//CRITERIA[DataPointName='TransactionNumber']/CriteriaComparisonValue”).Dump();
}
void Main()
{
字符串xml=@“
交易编号
12457845
";
var searchCriteria=XElement.Parse(xml);
searchCriteria.XPathSelectElements(//CRITERIA[DataPointName='TransactionNumber']/CriteriaComparisonValue”).Dump();
}
LINQ到XML查询的更准确XPath转换如下:
//CRITERIA[DataPointName = 'TransactionNumber']/CriteriaComparisonValue
下面简要介绍上述谓词表达式(方括号中的表达式)的工作原理
DataPointName
引用上下文元素名为“DataPointName”
的子元素。在这个特定谓词中,上下文元素是CRITERIA
“TransactionNumber”
加引号表示XPath中的文字字符串。将元素与XPath中的字符串进行比较时,通过调用XPathstring()
函数将元素转换为字符串。LINQ到XML查询的更准确XPath转换如下:
//CRITERIA[DataPointName = 'TransactionNumber']/CriteriaComparisonValue
下面简要介绍上述谓词表达式(方括号中的表达式)的工作原理
DataPointName
引用上下文元素名为“DataPointName”
的子元素。在这个特定谓词中,上下文元素是CRITERIA
“TransactionNumber”
加引号表示XPath中的文字字符串。将元素与XPath中的字符串进行比较时,通过调用XPathstring()
函数将元素转换为字符串