2016-11-11 33 views
2

我有這個包含證書及其屬性的xml。這裏是我正在運行提取查詢的xmlXPath2:不允許多個項目的序列作爲字符串的第一個參數()

<Certificates> 
    <CertificateAndChain> 
     <Certificate> 
      <FriendlyName /> 
      <Thumbprint>EE8B375347FCADDC25547FDDF61866E07D5B6A71</Thumbprint> 
      <SerialNumber>256BB11DB5BE889E46EBCD85608DA849</SerialNumber> 
      <Version>3</Version> 
      <SignatureAlgorithm>sha1RSA</SignatureAlgorithm> 
      <Issuer>CN=certname</Issuer> 
      <Subject>CN=certname</Subject> 
      <NotAfter>2040-09-26T18:30:00Z</NotAfter> 
      <NotBefore>2016-09-27T18:30:00Z</NotBefore> 
      <IsVerified>false</IsVerified> 
     </Certificate> 

。 。 。(續)...

我已經寫了這個XML,需要提取所有那些關於未來10天來已過期的證書的指紋另一個測試。 作爲測試的一部分,我已經寫了提取查詢爲:

<XPath2ResponseParameter Name="TPName"><ExtractionQuery><![CDATA[string(//CertificateAndChain/Certificate[NotAfter[text() <= (current-dateTime() + xs:dayTimeDuration('P10D'))]]/Thumbprint)]]></ExtractionQuery></XPath2ResponseParameter> 

測試是在XML文件中。然而,當我運行測試,我得到這個異常: 多個項目的順序是不允許的字符串()的第一個參數。 這可能是因爲xml中存在多個證書元素。所以,我無法找出方法來提取所有的指紋沒有提到的條件(可能有超過1,我需要提取所有的)

誰能幫助我解決這個問題?

回答

0

可以使用XPath 2.0時在軸調用功能。因此,嘗試移動string()功能在內的XPath結束(格式化的可讀性):

//CertificateAndChain 
/Certificate[ 
    NotAfter[ 
     text() <= (current-dateTime() + xs:dayTimeDuration('P10D')) 
    ] 
]/Thumbprint 
/string() 

UPDATE:

由於CDATA不能在這種情況下接收多個字符串,根據在你的第一個註釋錯誤信息,那麼你需要這些字符串合併成一個,大概用string-join()

string-join(
    //CertificateAndChain 
    /Certificate[ 
     NotAfter[ 
      text() <= (current-dateTime() + xs:dayTimeDuration('P10D')) 
     ] 
    ]/Thumbprint 
    /string() 
,' ') 
+0

<![CDATA [// Certificat eAndChain/Certificate [NotAfter [text()<=(current-dateTime()+ xs:dayTimeDuration('P10D'))]]/Thumbprint/string()]]> 我試過了SOLN。但它沒有成功。 CDATA預計returntype是字符串。希望這沒有打破這個前提。 – user2549046

+0

我試過了:<![CDATA [string(// CertificateAndChain/Certificate [NotAfter [text()<=(current-dateTime()+ xs:dayTimeDuration('P10D' ))]] /指紋/串())]]> 並再次類似的錯誤:多個項目的序列不允許作爲字符串的第一個參數()(「E8FDDC2BA4CAED4533DC6E14BA24CF ...「,」97AC511293A4207F2A8875B07B6928 ...「,...) – user2549046

+0

@ user2549046請參閱** UPDATE **部分.. – har07

相關問題