Почему дублированный элемент добавляется в XML? - PullRequest
0 голосов
/ 26 сентября 2019

Я создаю в памяти 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;

}
...