1

以下行:

string cellData = d.XPathSelectElement(cellSelector).Value;

引发异常,说明“XPath 表达式评估为意外类型 System.Double。”

CellSelector 包含:“./Units * ./product/Cost”

XElement d 中的数据是:

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

在此示例中,我需要该行的输出为“52.04”,更理想的是,我希望它为“£52.04”。

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

我尝试将表达式更改为“String(./Units * ./product/Cost)”,但这会生成异常“XPath 表达式评估为意外类型 System.String”。我希望能奏效。

4

2 回答 2

2

XPathSelectElement(expr)期望 XPath 表达式的求值结果expr是一个元素(如方法名称所示)。

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

XPathEvaluate()就是这样一种方法。

于 2012-06-20T13:12:51.430 回答
1

XPathEvaluate似乎是你想要的:

var cellData = xml.XPathEvaluate("./Units * ./product/Cost");
cellData = string.Format("£ {0}", cellData);
// result: cellData == "£ 52,04"
于 2012-06-20T11:34:58.057 回答