首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C/C++和libxml将命名空间添加到子元素,而不是根元素

C/C++和libxml将命名空间添加到子元素,而不是根元素
EN

Stack Overflow用户
提问于 2014-01-29 23:13:27
回答 1查看 3.2K关注 0票数 2

我尝试用libxml Libraries C/C++创建一个简单的XML文件。

代码语言:javascript
复制
#include <libxml/tree.h>

int main()
{

xmlDocPtr doc = xmlNewDoc(BAD_CAST "1.0");
xmlNodePtr root = xmlNewNode(NULL,BAD_CAST "BookingUpdate");

xmlDocSetRootElement(doc,root);
//Create new Namespaces
xmlNsPtr ns = xmlNewNs (root, BAD_CAST"http://www.systems.com/XMLSchema/BUM/TriggerBookingUpdate/2_0", BAD_CAST "");
xmlNsPtr ns1 = xmlNewNs (root, BAD_CAST"http://www.systems.com/XMLSchema/common/header/1_1", BAD_CAST "ns1");
xmlNsPtr xsi = xmlNewNs (root, BAD_CAST"http://www.w3.org/2001/XMLSchema-instance", BAD_CAST "xsi");

//Set the new namespace on root
xmlSetNs(root,ns1);

// Create a new Element
xmlNewChild(root,NULL,BAD_CAST"InterfaceHeader", BAD_CAST"Value");


xmlDocFormatDump(stdout,doc,1);
xmlFreeDoc(doc);
return 0;
}

结果:使用命名空间创建根元素

代码语言:javascript
复制
<?xml version="1.0"?> 
<ns1:BookingUpdate
     xmlns:="http://www.systems.com/XMLSchema/BUM/TriggerBookingUpdate/2_0"
     xmlns:ns1="http://www.systems.com/XMLSchema/common/header/1_1"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">  
     <ns1:InterfaceHeader>
          Value
      </ns1:InterfaceHeader>
</ns1:BookingUpdate>

我希望结果根元素没有任何名称空间,但只有一个具有相应名称空间的子元素

代码语言:javascript
复制
<?xml version="1.0"?>
<BookingUpdate xmlns:="http://www.systems.com/XMLSchema/BUM/TriggerBookingUpdate/2_0" xmlns:ns1="http://www.systems.com/XMLSchema/common/header/1_1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <ns1:InterfaceHeader>
          Value
      </ns1:InterfaceHeader>
</BookingUpdate>

我怎么才能得到这个呢?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2014-01-29 23:58:39

我自己找到了一个解决方案

代码语言:javascript
复制
#include <libxml/tree.h>

int main()
{
xmlNodePtr child1;
xmlDocPtr doc = xmlNewDoc(BAD_CAST "1.0");
xmlNodePtr root = xmlNewNode(NULL,BAD_CAST "BookingUpdate");

xmlDocSetRootElement(doc,root);
//Create namespaces
xmlNsPtr ns = xmlNewNs (root, BAD_CAST"http://www.systems.com/XMLSchema/BUM/TriggerBookingUpdate/2_0", BAD_CAST "");
xmlNsPtr ns1 = xmlNewNs (root, BAD_CAST"http://www.systems.com/XMLSchema/common/header/1_1", BAD_CAST "ns1");
xmlNsPtr xsi = xmlNewNs (root, BAD_CAST"http://www.w3.org/2001/XMLSchema-instance", BAD_CAST "xsi");

//Set namespace on root
//xmlSetNs(root,ns1);

// Create a new Element
child1=xmlNewChild(root,NULL,BAD_CAST"InterfaceHeader", BAD_CAST"Value");
xmlSetNs(child1, ns1);

xmlDocFormatDump(stdout,doc,1);
xmlFreeDoc(doc);
return 0;
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21435110

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档