C 从 XML 中提取数据

C extract data from XML

我有一个像这样的简单 xml 文件存储在 char[] 中。

<?xml-stylesheet type='text/xsl' href='http://prova'?>
<ns2:operation-result xmlns:ns1="http://www.w3.org/1999/xlink" xmlns:ns2="http://www.prova.it/pr/a" operation-start="2015-01-12T15:22:46.890+01:00" operation-end="2015-01-12T15:22:46.891+01:00"><ns2:error code="ROSS-A001"><ns2:msg>Error</ns2:msg></ns2:error></ns2:operation-result>

我需要一个简单的 C 例程来仅提取错误代码(在本例中为 ROSS-A001)和两者之间的错误消息并将其放入两个 char[]。

我该怎么做?

非常感谢

怎么样

char *extractErrorCode(const char *xml)
{
    char  *pointer;
    char  *result;
    char  *tail;
    size_t length;

    /* advance the pointer to the = character, and skip the " -> +1 */
    pointer = strstr(xml, "error code=") + strlen("error code=") + 1;
    result  = NULL;
    if (pointer == NULL)
        return NULL;

    length = 0;
    tail   = strchr(pointer, '>');
    if (tail == NULL)
        return NULL;
    /* -1 skip the trailing " */
    length = tail - pointer - 1;
    if (length > 0)
    {
        result = malloc(1 + length);
        if (result == NULL)
            return NULL;
        result[length] = '[=10=]';

        memcpy(result, pointer, length);
    }

    return result;
}

记得释放 return 值,如果它不是 NULL