xml文件中两个重名的子节点该怎么添加?

blog9496 2009-06-01 11:08:16
用addchild无法通过编译,提示有重名,该用哪个函数来添加呢?
...全文
443 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
僵哥 2009-06-03
  • 打赏
  • 举报
回复
TXMLDocument *xmldoc = new TXMLDocument(NULL);
try{
xmldoc->Active = true;
xmldoc->Encoding = "gb2312";
xmldoc->Options = Xmlintf::TXMLDocOptions()<<doNodeAutoIndent;
_di_IXMLNode d_node = xmldoc->CreateElement(L"d",L"Test");
xmldoc->DocumentElement = d_node;

_di_IXMLNode a_node = xmldoc->CreateElement(L"a",L"Test");
d_node->ChildNodes->Add(a_node);
a_node->Text = "内容";

a_node = xmldoc->CreateElement(L"a",L"Test");
a_node->Text = "内容";
d_node->ChildNodes->Add(a_node);

ShowMessage(xmldoc->XML->Text);

}__finally{
xmldoc->Free();
}
blog9496 2009-06-03
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 unsigned 的回复:]
对a也使用和d相同的ns
[/Quote]

僵哥,你的话没看懂,问题还未解决,现在是用richedit暂时应付。

blog9496 2009-06-03
  • 打赏
  • 举报
回复
僵哥,太感谢了!
blog9496 2009-06-02
  • 打赏
  • 举报
回复
多谢僵哥,你的代码可以用。

但是现在有新的问题,我把
_di_IXMLNode a_node = xmldoc->CreateElement(L"a",L"");
改为_di_IXMLNode d_node = xmldoc->CreateElement(L"d",L"123");

结果生成如下的文档:
<?xml version="1.0" encoding="UTF-8"?>
<d xmlns="123">
<a xmlns="">内容</a>
<a xmlns="">内容</a>
</d>

不仅d有xmlns,两个a也有,而我要生成的xml不允许a有xmlns的定义,我试了用
d_node->SetAttribute("xmlns","123")也是一样会导致a多余了xmlns的定义,
请问僵哥该怎么解决,不让a也有xmlns的定义。谢谢!
僵哥 2009-06-02
  • 打赏
  • 举报
回复
	TXMLDocument *xmldoc = new TXMLDocument(NULL);
try{
xmldoc->Active = true;
xmldoc->Encoding = "gb2312";
xmldoc->Options = Xmlintf::TXMLDocOptions()<<doNodeAutoIndent;
_di_IXMLNode d_node = xmldoc->CreateElement(L"d",L"");
xmldoc->DocumentElement = d_node;

_di_IXMLNode a_node = xmldoc->CreateElement(L"a",L"");
d_node->ChildNodes->Add(a_node);
a_node->Text = "内容";

a_node = xmldoc->CreateElement(L"a",L"");
a_node->Text = "内容";
d_node->ChildNodes->Add(a_node);

ShowMessage(xmldoc->XML->Text);

}__finally{
xmldoc->Free();
}
Jim@luckeeinc.com 2009-06-02
  • 打赏
  • 举报
回复
_di_IXMLDocument XMLDoc;
XMLDoc = NewXMLDocument();
try
{
XMLDoc->LoadFromFile((WideString)"1.xml");
XMLDoc->Active=true;
}
catch(...)
{
return;
}

_di_IXMLNode node=XMLDoc->DocumentElement;
node=node->AddChild(WideString("d"));

_di_IXMLNode subnode1=node->AddChild(WideString("a"));
subnode1->SetText(WideString("內容1"));
_di_IXMLNode subnode2=node->AddChild(WideString("a"));
subnode2->SetText(WideString("內容2"));

XMLDoc->SaveToFile("1.xml");
blog9496 2009-06-02
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 fairchild811 的回复:]
http://bbs.xml.org.cn/dispbbs.asp?boardid=11&id=67063&star=1

http://210.34.148.101:8488/WebProg/webchpt20.htm

帮顶,是不是用namespace
[/Quote]

谢谢,用namespace不行,这个需要生成的xml文件必须要两个重名的节点,例如:
<d>
<a>内容1</a>
<a>内容2</a>
</d>
僵哥 2009-06-02
  • 打赏
  • 举报
回复
对a也使用和d相同的ns
fairchild811 2009-06-01
  • 打赏
  • 举报
回复
http://bbs.xml.org.cn/dispbbs.asp?boardid=11&id=67063&star=1

http://210.34.148.101:8488/WebProg/webchpt20.htm

帮顶,是不是用namespace
肆水東澤 2009-06-01
  • 打赏
  • 举报
回复
帮顶

13,826

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧