2016-11-11 37 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

相关问题