Невозможно обновить атрибуты XML с помощью XMLLITE C++

Я пытаюсь обновить атрибуты NODE документа XML с помощью программы чтения и записи XMLLITE, но не смог. Когда я пытаюсь добавить новый атрибут, писатель добавляет.

Мой вопрос: возможно ли обновить значения атрибута Existing XML Node с помощью XMLLITE?

<parent>
    <child Name="AAA">Yes
    </child>
</parent>

Я хочу обновить вышеприведенный атрибут имени узла XML

<parent>
    <child Name="BBB">Yes
    </child>
</parent>

XMLLIte C++ Code

//if the element is price, then discount price by 25%   
                                    if (wcscmp(pQName, L"child") == 0)
                                    {
                                        inPrice = TRUE;
                                        /*if (FAILED(hr = pWriter->WriteAttributeString(NULL, L"test", NULL, L"TEST")))
                                        {
                                            wprintf(L"Error writing WriteAttributeString, error is %08.8lx", hr);
                                            return -1;
                                        }*/

                                        /*if (FAILED(hr = pWriter->WriteNodeShallow(pReader, FALSE)))
                                        {
                                            wprintf(L"Error writing WriteNodeShallow, error is %08.8lx", hr);
                                            return -1;
                                        }*/

                                        //if (FAILED(hr = pReader->MoveToAttributeByName(L"Name", NULL)))
                                        if (FAILED(hr = pReader->MoveToFirstAttribute()))
                                        {
                                            wprintf(L"Error Moving to Attribute, error is %08.8lx", hr);
                                        }

                                        LPCWSTR  AttributeValue = NULL ; 

                                        if (FAILED(hr = pReader->GetValue(&AttributeValue, NULL)))
                                        {
                                            wprintf(L"Error Moving to Attribute, error is %08.8lx", hr);
                                        }

                                        if (FAILED(hr = pWriter->WriteNodeShallow(pReader, FALSE)))
                                        {
                                            wprintf(L"Error writing WriteNodeShallow, error is %08.8lx", hr);
                                            return -1;
                                        }

                                        inPrice = TRUE;
                                        if (FAILED(hr = pWriter->WriteAttributeString(NULL, L"Name", NULL, L"BBB")))                                            
                                        {
                                        wprintf(L"Error writing WriteAttributeString, error is %08.8lx", hr);
                                        return -1;
                                        }


                                    }
                                    else
                                    {
                                        inPrice = FALSE;
                                        if (FAILED(hr = pWriter->WriteNodeShallow(pReader, FALSE)))
                                        {
                                            wprintf(L"Error writing WriteNodeShallow, error is %08.8lx", hr);
                                            return -1;
                                        }

                                    }

Я попытался сделать это, как вы упомянули, я попытался установить значение атрибута, но он не устанавливал значение для существующего атрибута, но если я попытался добавить новый атрибут, то добавление атрибута.

Когда я пытался зациклить список сквозных узлов, тип узла никогда не подходит к случаю XmlNodeType_Attribute: Я НЕ УВЕРЕН, ПОЧЕМУ?

Пожалуйста, дайте мне ваши предложения,

Спасибо karthik

0 ответов

Другие вопросы по тегам