Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 包含数学表达式的XPath_C#_Xpath_Linq To Xml - Fatal编程技术网

C# 包含数学表达式的XPath

C# 包含数学表达式的XPath,c#,xpath,linq-to-xml,C#,Xpath,Linq To Xml,以下一行: string cellData = d.XPathSelectElement(cellSelector).Value; 引发异常,声明“XPath表达式计算为意外类型System.Double。” 单元格选择器包含:“./单位*/产品/成本” 元素d中的数据为: <LineItem> <product> <ProductId>22</ProductId> <ProductName>Car Cleanin

以下一行:

string cellData = d.XPathSelectElement(cellSelector).Value;
引发异常,声明“XPath表达式计算为意外类型System.Double。”

单元格选择器包含:“./单位*/产品/成本”

元素d中的数据为:

<LineItem>
  <product>
    <ProductId>22</ProductId>
    <ProductName>Car Cleaning</ProductName>
    <Cost>26.02</Cost>
  </product>
  <Units>2</Units>
</LineItem>

22
洗车
26.02
2.
在本例中,我需要该行的输出为“52.04”,更理想的是,我希望它为“52.04英镑”

XPathExpression必须是什么样子才能实现这一点

我尝试将表达式更改为“String(./Units*/product/Cost)”,但这会生成异常“XPath表达式计算为意外类型System.String”。我希望它能正常工作。

似乎就是您想要的:

var cellData = xml.XPathEvaluate("./Units * ./product/Cost");
cellData = string.Format("£ {0}", cellData);
// result: cellData == "£ 52,04"
期望XPath表达式
expr
的计算结果是一个元素(如方法名称所示)

在本例中,您需要使用另一种方法,该方法允许任何XPath表达式(而不仅仅是选择元素的表达式)作为参数

就是这样一种方法