Я создаю в памяти XML с использованием API Xerces.Я могу добавить дубликаты элементов (одинаковые имя тега элемента и атрибуты) к узлу элемента.Пожалуйста, предложите мне, как я могу избежать добавления элемента XML, если он уже присутствует в качестве дочернего элемента узла элемента.
Ниже приводится создание XML (два элемента с именем тега "Batch" дублируются):
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<root>Text_root_01
<Student>Text_Student_01
<Batch ID="B01" Subject="Math">Ratnesh</Batch>Text_Student_02
<Batch ID="B01" Subject="Math">Ratnesh</Batch>Text_Student_03
</Student>Text_root_02
<Othres Company="Airtel" NoOfEmployee="15">Text_Others</Othres>Text_root_03
</root>
Follwing - это код CPP, который я использую для создания этого XML:
int main(int argc, char *argv[]) {
//XMLCh temp_buff[64];
XMLPlatformUtils::Initialize();
DOMImplementation *p_domImpl = DOMImplementationRegistry::getDOMImplementation(XMLString::transcode("Core"));
DOMDocument *p_domDoc = p_domImpl->createDocument(0, XMLString::transcode("root"), 0);
DOMElement *p_root_elem = p_domDoc->getDocumentElement();
DOMText *root_text_01 = p_domDoc->createTextNode(XMLString::transcode("Text_root_01"));
p_root_elem->appendChild(root_text_01);
DOMElement *root_child_student = p_domDoc->createElement(XMLString::transcode("Student"));
p_root_elem->appendChild(root_child_student);
DOMText* student_text_01 = p_domDoc->createTextNode(XMLString::transcode("Text_Student_01"));
root_child_student->appendChild(student_text_01);
DOMElement* student_child_batch = p_domDoc->createElement(XMLString::transcode("Batch"));
student_child_batch->setAttribute(XMLString::transcode("Subject"), XMLString::transcode("Math"));
student_child_batch->setAttribute(XMLString::transcode("ID"), XMLString::transcode("B01"));
DOMText* batch_text = p_domDoc->createTextNode(XMLString::transcode("Ratnesh"));
student_child_batch->appendChild(batch_text);
root_child_student->appendChild(student_child_batch);
DOMText* student_text_02 = p_domDoc->createTextNode(XMLString::transcode("Text_Student_02"));
root_child_student->appendChild(student_text_02);
student_child_batch = p_domDoc->createElement(XMLString::transcode("Batch"));
student_child_batch->setAttribute(XMLString::transcode("Subject"), XMLString::transcode("Math"));
student_child_batch->setAttribute(XMLString::transcode("ID"), XMLString::transcode("B01"));
batch_text = p_domDoc->createTextNode(XMLString::transcode("Ratnesh"));
student_child_batch->appendChild(batch_text);
root_child_student->appendChild(student_child_batch);
DOMText* student_text_03 = p_domDoc->createTextNode(XMLString::transcode("Text_Student_03"));
root_child_student->appendChild(student_text_03);
DOMText* root_text_02 = p_domDoc->createTextNode(XMLString::transcode("Text_root_02"));
p_root_elem->appendChild(root_text_02);
DOMElement *root_child_others = p_domDoc->createElement(XMLString::transcode("Othres"));
root_child_others->setAttribute(XMLString::transcode("Company"), XMLString::transcode("Airtel"));
root_child_others->setAttribute(XMLString::transcode("NoOfEmployee"), XMLString::transcode("15"));
p_root_elem->appendChild(root_child_others);
DOMText* others_text_01 = p_domDoc->createTextNode(XMLString::transcode("Text_Others"));
root_child_others->appendChild(others_text_01);
DOMText* root_text_03 = p_domDoc->createTextNode(XMLString::transcode("Text_root_03"));
p_root_elem->appendChild(root_text_03);
xml_output_to_stream(p_domDoc);
p_domDoc->release();
XMLPlatformUtils::Terminate();
return 0;
}