Я пытаюсь обновить атрибуты 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: Я НЕ УВЕРЕН, ПОЧЕМУ?
Пожалуйста, дайте мне ваши предложения,
Спасибо
Картик
Задача ещё не решена.