如何使用msxml解析器创建子元素
How do I create child elements using msxml parser?
我有一个users.xml
<?xml version="1.0"?>
<Data>
<Users>
<User name="xyz" email="xyz@xyz.com">
<Tasks/>
</User>
</Users>
</Data>
我有一个引用到Users元素使用以下代码
IXMLDOMDocumentPtr pXMLDom;
// code to load the xml dox
IXMLDOMElementPtr pXMLDocElement = NULL;
IXMLDOMNodeListPtr pXMLUsers = NULL;
//gets <Data>
pXMLDocElement = pXMLDom->GetdocumentElement();
//gets <Users>
pXMLUsers = pXMLDocElement->childNodes;
如何在Users元素中创建子元素User呢?我尝试在pXMLUsers
上使用createElement()
,但它显示IXMLDOMNodeListPtr has no member appendChild
。
我不知道如何创建一个新元素。
谢谢。
您不能使用IXMLDOMNodeListPtr
来附加子元素—它只是用于迭代现有的子元素。
你可以使用IXMLDOMElementPtr
直接调用pXMLDocElement->appendChild()
在你的文档中添加子元素
好的,我已经找到了一个解决方案,感谢TERACytE
IXMLDOMDocumentPtr pXMLDom;
// code to load the xml dox
//Creating <User>
MSXML2::IXMLDOMElementPtr pUser = pXMLDom->createNode(NODE_ELEMENT, "User", "");
//Creating <User name="">
MSXML2::IXMLDOMAttributePtr pName = pXMLDom->createAttribute("name");
pName->value = name;
//Creating <User email="">
MSXML2::IXMLDOMAttributePtr pEmail = pXMLDom->createAttribute("email");
pEmail->value = email;
//Adding name attrib to <User>
pUser->setAttributeNode(pName);
//Adding email attrib to <User>
pUser->setAttributeNode(pEmail);
//Creating <Tasks>
MSXML2::IXMLDOMElementPtr pTasks = pXMLDom->createNode(NODE_ELEMENT, "Tasks", "");
//Creating <Task>
MSXML2::IXMLDOMElementPtr pTask = pXMLDom->createNode(NODE_ELEMENT, "Task", "");
//Creating <Task name="">
MSXML2::IXMLDOMAttributePtr pTName = pXMLDom->createAttribute("name");
pTName->value = task;
//Creating <User status="">
MSXML2::IXMLDOMAttributePtr pStatus = pXMLDom->createAttribute("status");
pStatus->value = status;
//Adding name attrib to <User>
pTask->setAttributeNode(pTName);
//Adding status attrib to <User>
pTask->setAttributeNode(pStatus);
//Adding <Task> to <Tasks>
pTasks->appendChild(pTask);
//Adding <Tasks> to <User>
pUser->appendChild(pTasks);
//Selecting <Users>
MSXML2::IXMLDOMNodePtr pUsers = pXMLDom->selectSingleNode("/Data/Users");
//Adding <User> to <Users>
pUsers->appendChild(pUser);
相关文章:
- 如何为 c++ 的不同变量类型的结构元素创建动态数组?
- 如何创建一个所有行大小不同的 2D 数组,并且用户将指定每行将有多少个元素?
- push_back通过自行创建的对象获取最后一个元素的向量
- 动态分配列表 - 创建一个函数,用于删除所有包含偶数值的元素
- std::map:当元素不可默认构造时创建/替换元素
- 如何在新数组较小时创建新数组并将旧数组的最后一个元素复制到新数组中?
- 从转换后的容器元素创建离散分布
- 如何在 c++ 中创建对的优先级队列.这会弹出具有最小值的元素.默认的弹出最大值
- gStreamer 将元素添加到通过 gst_parse_launch 创建的管道中
- 我无法在用forward_as_tuple创建的元组中按类型访问元素
- 第 k 个最小元素 - 不能创建大于 k 大小的数组
- 创建一个函数来转换数组元素的类型并返回数组的地址
- 我想创建一个嵌套数组,该数组由另一个数组中的所有元素组成,但分为两个
- r-在Rcpp和C++之间转换矢量(使用Rcpp::as或Rcpp:::wrap)是否会创建一个新的矢量并复制元素
- 解析字符串以创建元素列表
- 时间和空间复杂性在二叉树的每个级别创建元素向量(NON-BST)
- 首先创建字符串,然后通过移动语义将其添加到 vector 或在 vector 中创建元素是否具有内存效率
- 为什么'std::vector<int> b{2};'创建 1 元素向量,而不是 2 元素向量?
- 如何在VTK中动态创建元素
- lower_bound功能,而不创建T元素