本文整理汇总了C++中XMLElement::AddChild方法的典型用法代码示例。如果您正苦于以下问题:C++ XMLElement::AddChild方法的具体用法?C++ XMLElement::AddChild怎么用?C++ XMLElement::AddChild使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类XMLElement
的用法示例。
在下文中一共展示了XMLElement::AddChild方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: onWrite
void CfgDrivers::onWrite()
{
XMLElement *xel = config->getElement();
while (xel->GetChildrenCount() > 0)
{
xel->RemChild(xel->GetChild(0));
}
for (int32 i=0; i<drivers.Count(); i++)
{
XMLElement *el = new XMLElement(Cfg_Driver, 0);
el->AddAttribute(Cfg_DriverHarmful, drivers[i]->harmful ? 1 : 0);
el->AddAttribute(Cfg_DriverName, drivers[i]->driver);
xel->AddChild(el);
}
}
示例2: assert
// expat wrapper functions
//
static void
xph_start(void* p, const XML_Char* name, const XML_Char** attrs)
{
assert(p); assert(name); assert(attrs);
ExpatParseContext* Ctx = (ExpatParseContext*)p;
XMLElement* Element;
const char* ns_root = name;
const char* local_name = strchr(name, '|');
if ( local_name != 0 )
name = local_name + 1;
if ( Ctx->Scope.empty() )
{
Ctx->Scope.push(Ctx->Root);
}
else
{
Element = Ctx->Scope.top();
Ctx->Scope.push(Element->AddChild(name));
}
Element = Ctx->Scope.top();
Element->SetName(name);
// map the namespace
std::string key;
if ( ns_root != name )
key.assign(ns_root, name - ns_root - 1);
ns_map::iterator ni = Ctx->Namespaces->find(key);
if ( ni != Ctx->Namespaces->end() )
Element->SetNamespace(ni->second);
// set attributes
for ( int i = 0; attrs[i] != 0; i += 2 )
{
if ( ( local_name = strchr(attrs[i], '|') ) == 0 )
local_name = attrs[i];
else
local_name++;
Element->SetAttr(local_name, attrs[i+1]);
}
}
示例3: startElement
void startElement(const XMLCh* const x_name,
XERCES_CPP_NAMESPACE::AttributeList& attributes)
{
assert(x_name);
std::string tx_name;
if ( ! XercesString_to_UTF_8(x_name, tx_name) )
m_HasEncodeErrors = true;
const char* name = tx_name.c_str();
XMLElement* Element;
const char* ns_root = name;
const char* local_name = strchr(name, ':');
if ( local_name != 0 )
name = local_name + 1;
if ( m_Scope.empty() )
{
m_Scope.push(m_Root);
}
else
{
Element = m_Scope.top();
m_Scope.push(Element->AddChild(name));
}
Element = m_Scope.top();
Element->SetName(name);
// set attributes
ui32_t a_len = attributes.getLength();
for ( ui32_t i = 0; i < a_len; i++)
{
std::string aname, value;
if ( ! XercesString_to_UTF_8(attributes.getName(i), aname) )
m_HasEncodeErrors = true;
if ( ! XercesString_to_UTF_8(attributes.getValue(i), value) )
m_HasEncodeErrors = true;
const char* x_aname = aname.c_str();
const char* x_value = value.c_str();
if ( strncmp(x_aname, "xmlns", 5) == 0 )
AddNamespace(x_aname+5, x_value);
if ( ( local_name = strchr(x_aname, ':') ) == 0 )
local_name = x_aname;
else
local_name++;
Element->SetAttr(local_name, x_value);
}
// map the namespace
std::string key;
if ( ns_root != name )
key.assign(ns_root, name - ns_root - 1);
ns_map::iterator ni = m_Namespaces->find(key);
if ( ni != m_Namespaces->end() )
Element->SetNamespace(ni->second);
}