[xml] About the xmlXPathEvalExpression?



Hi all,
    I use the xmlXPathEvalExpression to retrieval my xml file.
    But there is one problem to confused me lots of time.
   
    Here is my code below this line.
    =======================================================================================
    xmlXPathContextPtr xpathCtx;
    xmlXPathObjectPtr xpathObj;
 
    xpathCtx = xmlXPathNewContext(doc);
    if(xpathCtx == NULL) {
      fprintf(stderr,"Error: unable to create new XPath context\n");
      return(-1);
    }
 
    xpathObj = xmlXPathEvalExpression((xmlChar *) "//EncryptedKey", xpathCtx);
    if(xpathObj == NULL) {
       fprintf(stderr,"Error: unable to evaluate xpath _expression_ \"%s\"\n");
       xmlXPathFreeContext(xpathCtx);
       return(-1);
    }
 
    printf("nodeset number : %d\n", xpathObj->nodesetval->nodeNr);
 
 
    Here is my xml file content below this line.
    =========================================================================================
<XMLEncRoot>
<EncryptedKey Id="EK_EncKeyA" xmlns="http://www.w3.org/2001/04/xmlenc#">
 <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5"/>
 <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
   <ds:KeyName>strKey_A</ds:KeyName>
          <ds:X509Data>
            <ds:X509Certificate>MIIEvDCCA6SgAwIBAgIEP30mzDANBgkqhkiG9w0BAQUFADBhMQswCQYDVQQGEwJU
VzEbMBkGA1UEChMSVEFJV0FOLUNBLkNPTSBJbmMuMRgwFgYDVQQLEw9FdmFsdWF0
aW9uIE9ubHkxGzAZBgNVBAMTElRhaUNBIFRlc3QgRlhNTCBDQTAeFw0wMzEwMDMw
NzM1NDBaFw0wNDEwMDIwNzM1NDBaMHYxCzAJBgNVBAYTAlRXMRAwDgYDVQQKEwdG
aW5hbmNlMRswGQYDVQQLExJUYWlDQSBUZXN0IEZYTUwgQ0ExFTATBgNVBAsTDDIz
MjE4MTgzLUZTQzEMMAoGA1UECxMDTUlTMRMwEQYDVQQDEwpNMjQyNTQ5NTg3MIGf
MA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDehBRUX4PtRPn1Z+XESHr9UouU2ZWN
UGa58s1rwXp18esH8os+J+z68Omy+4p9PN/70Xjazbi49Id+wMJK2eBZjyEzeF4X
rz408JipLlM6dfTTgcF1ovCK07VbUCKkFIwlwYwIn7o/iywjQIR1t3QCf52v8Gme
UUm+1OV09mG/RQIDAQABo4IB6TCCAeUwDgYDVR0PAQH/BAQDAgP4MB0GA1UdJQQW
MBQGCCsGAQUFBwMCBggrBgEFBQcDBDBDBgNVHR8EPDA6MDigNqA0hjJodHRwczov
L3NzbF9ldmFsLnRhaWNhLmNvbS50dy91c2VyL0ZYTUwvcmV2b2tlLmNybDAaBgNV
HREEEzARgQ8xMjMxMjNAbWFpbC5jb20wgd4GA1UdIASB1jCB0zCB0AYIYIEeAwEB
h2cwgcMwgZsGCCsGAQUFBwICMIGOGoGLQ2xhc3MgMy4xLjIuMywgTm9uLWZpbmFu
Y2lhbCBhbmQgbm9uLSBzZWN1cml0aWVzLCBKdXN0IGZvciB0aGUgYXV0aG9yaWVk
IHJlbHlpbmcgcGFydHk6IHJlZmVyIHRvIHRoZSAybmQgT1Ugb2YgdGhpcyBjZXJ0
aWZpY2F0ZSBTdWJqZWN0IEROLjAjBggrBgEFBQcCARYXaHR0cDovL2NhLnRhaWNh
LmNvbS50dy8wPwYIKwYBBQUHAQEEMzAxMC8GCCsGAQUFBzABhiNodHRwOi8vT0NT
UF9FdmFsLlRhaWNhLmNvbS50dzo4MDAxLzATBgNVHSMEDDAKgAhOYUPertGDmjAR
BgNVHQ4ECgQIQYVUQZKf9t4wCQYDVR0TBAIwADANBgkqhkiG9w0BAQUFAAOCAQEA
VKNGIqrb6ICLiX3mGq0Pi18w8BLuJ9UxtXG0eEVUl5KgJvru7y+PX8teUejzpq/1
soOB9ft6Nv1mcgjxSpMOV0Uxn5EcQxSDmPAICWlpLdJFsICq+l0dRSpY2e85PaMo
ffxDstu9krGB++sYfNyyDeWbgzsdivwyqebg3o4NsN5PW6+LzxFeI/yflOo1Uo+C
ESkyqv4rPeEcezz0SJi6QZSK8siJZgtDdZUv2M2QFkxyoGC6FJwl1zcHV5vMvWH2
0COtpo1gdlGnGYrpk6lQwLMR1hhmlKbMR1NhXwe3oBWLcOPpuPIPyEHdFAPFmjvY
LIxdY4P6z+eDJ2IH1r7Nrw==</ds:X509Certificate>
          </ds:X509Data>
        </ds:KeyInfo>
        <CipherData>
          <CipherValue/>
       </CipherData>
       <CarriedKeyName>Co-Encrypt</CarriedKeyName>
</EncryptedKey>
</XMLEncRoot>
======================================================================================================
 
the response is : "nodeset number : 0"
I want to get the "EncryptedKey" node, but the nodeset seems to get nothing.
I have been confused for three days.
I don't know what's wrong with my code.
I use libxml2 of 2.6.12.
Can anyone to tell me what's the problem of my code? Thanks very much.


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]