-1

XPath について理解するのに苦労しています。

やりたいことは、通貨の国コードから為替レートを抽出することです。

通貨を含む私の XML はここにあります: http://www.nationalbanken.dk/dndk/valuta.nsf/valuta.xml

これは私のクエリです:

query = xml.XPathSelectElement(**"exhangerates/dailyrates/currency[@code='"+ country +"']@rate"**).Value;

私は .NET 3.5 と asp webservice プロジェクトで作業しているため、次のエラーが発生します。

System.Xml.XPath.XPathException: 'exhangerates/dailyrates/currency[@code='USD']@rate' has an invalid token.
   at MS.Internal.Xml.XPath.XPathParser.ParseXPathExpresion(String xpathExpresion)
   at MS.Internal.Xml.XPath.QueryBuilder.Build(String query, Boolean allowVar, Boolean allowKey)
   at MS.Internal.Xml.XPath.QueryBuilder.Build(String query, Boolean& needContext)
   at System.Xml.XPath.XPathExpression.Compile(String xpath, IXmlNamespaceResolver nsResolver)
   at System.Xml.XPath.XPathNavigator.Evaluate(String xpath, IXmlNamespaceResolver resolver)
   at System.Xml.XPath.XPathEvaluator.Evaluate[T](XNode node, String expression, IXmlNamespaceResolver resolver)
   at System.Xml.XPath.Extensions.XPathSelectElements(XNode node, String expression, IXmlNamespaceResolver resolver)
   at System.Xml.XPath.Extensions.XPathSelectElement(XNode node, String expression)
   at WebServiceCurrency.Service1.RetrieveExchangeRate(String country) in c:\Users\Peter\Documents\GitHub\HotMess\C#\Webservices\WebServiceCurrency\WebServiceCurrency\Service1.asmx.cs:line 35
4

2 に答える 2

0

これは機能します:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
 <xsl:strip-space elements="*"/>    
 <xsl:template match="/">

   <xsl:value-of select="//dailyrates/currency[@code='USD']/@rate" />

 </xsl:template>
</xsl:stylesheet>

出力:

566,97

だからあなたのための解決策は

query = xml.XPathSelectElement(**"exhangerates/dailyrates/currency[@code='"+ country +"']/@rate"**).Value;
于 2012-12-18T02:19:29.760 に答える
0

エラー メッセージは、XPath に構文エラーがあることを伝えようとしています。為に

"exhangerates/dailyrates/currency[@code='"+ country +"']@rate"

読んだ

"exhangerates/dailyrates/currency[@code='"+ country +"']/@rate"

つまり、currencyノードに移動するステップと、そのrate属性に移動する次のステップの間にスラッシュを挿入します。(PCM がこのソリューションで私を打ち負かしたようです。脱帽です。)

于 2012-12-18T02:22:45.680 に答える