1

次の行:

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

「予期しない型 System.Double に評価された XPath 式」という例外をスローします。

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 に答える