使用 tinyxml-2 在 XML DOM c++ 上更新数据
Updating data on a XML DOM c++ using tinyxml-2
我想知道如何更新 DOM 上某个属性的数据?我已经搜索过,但找不到任何东西。基本上,我有一个名为 Hour 的属性(例如它是“11:03”),我希望将该特定属性的文本更改为“11:04”或任何其他不同的文本。
if( strcmp(Code1,Code2) == 0 )
{
strcpy(New,NewHour);
Element->FindAttribute("Hour")->SetAttribute(New); // here I want it to be changed in the DOM but I dont know how to do it
}
稍后编辑:这是我试过的方法,但它告诉我 FindAttribute() 是私有的..
确实可以使用 SetAttribute
,它接受属性 name 和 value 作为参数。
但是,TinyXml2 确实有使用 FindAttribute
的方法,因为我的应用程序中有这段代码:
// We need to get the assistant
const XMLAttribute *pAttrAssistant = const_cast<const XMLElement*>(pStudent)->FindAttribute("Assistant");
if (pAttrAssistant != nullptr)
{
LPCTSTR szAssistant = CA2CT(pAttrAssistant->Value(), CP_UTF8);
SetStudentInfo(eSchool, eAssign, strStudent, szAssistant, iStudyPoint);
}
else
{
// TODO: Throw exception if Assistant attribute missing
}
如您所见,我使用FindAttribute
方法,没有出现编译错误。如果您仔细观察,您会发现我正在使用 const
,这就是关键。
class公开了两个方法:
如您所知,其中一个设置为 private
。但是 const
重载设置为 public
:
我想知道如何更新 DOM 上某个属性的数据?我已经搜索过,但找不到任何东西。基本上,我有一个名为 Hour 的属性(例如它是“11:03”),我希望将该特定属性的文本更改为“11:04”或任何其他不同的文本。
if( strcmp(Code1,Code2) == 0 )
{
strcpy(New,NewHour);
Element->FindAttribute("Hour")->SetAttribute(New); // here I want it to be changed in the DOM but I dont know how to do it
}
稍后编辑:这是我试过的方法,但它告诉我 FindAttribute() 是私有的..
确实可以使用 SetAttribute
,它接受属性 name 和 value 作为参数。
但是,TinyXml2 确实有使用 FindAttribute
的方法,因为我的应用程序中有这段代码:
// We need to get the assistant
const XMLAttribute *pAttrAssistant = const_cast<const XMLElement*>(pStudent)->FindAttribute("Assistant");
if (pAttrAssistant != nullptr)
{
LPCTSTR szAssistant = CA2CT(pAttrAssistant->Value(), CP_UTF8);
SetStudentInfo(eSchool, eAssign, strStudent, szAssistant, iStudyPoint);
}
else
{
// TODO: Throw exception if Assistant attribute missing
}
如您所见,我使用FindAttribute
方法,没有出现编译错误。如果您仔细观察,您会发现我正在使用 const
,这就是关键。
class公开了两个方法:
如您所知,其中一个设置为 private
。但是 const
重载设置为 public
: