dtest.cpp

来自「IBM的解析xml的工具Xerces的源代码」· C++ 代码 · 共 1,677 行 · 第 1/5 页

CPP
1,677
字号
    bool OK = true;    //name + "FirstElement"    XMLString::transcode("FirstElement", tempStr2, 3999);    XMLString::copyString(tempStr, name);    XMLString::catString(tempStr, tempStr2);    DOMElement* docFirstElement = doc->createElement(tempStr);    doc->appendChild(docFirstElement);    //name + "FirstElement", name + "firstElement"    XMLString::catString(tempStr, name);    XMLString::transcode("FirstElement", tempStr2, 3999);    XMLString::catString(tempStr, tempStr2);    XMLString::catString(tempStr2, name);    XMLString::transcode("firstElement", tempStr3, 3999);    XMLString::catString(tempStr2, tempStr3);    docFirstElement->setAttribute(tempStr, tempStr2);    DOMAttr* docFirstElementAttr = docFirstElement->getAttributeNode(tempStr);    //name + "TargetProcessorChannel" + "This is " + doc->getNodeName() + "'s processing instruction");    XMLString::copyString(tempStr, name);    XMLString::transcode("TargetProcessorChannel", tempStr2, 3999);    XMLString::catString(tempStr, tempStr2);    XMLString::transcode("This is ", tempStr2, 3999);    XMLString::catString(tempStr2, doc->getNodeName());    XMLString::transcode("'s processing instruction", tempStr3, 3999);    XMLString::catString(tempStr2, tempStr3);    DOMProcessingInstruction* docProcessingInstruction = doc->createProcessingInstruction(tempStr, tempStr2);    docFirstElement->appendChild(docProcessingInstruction);    //name + "TestBody"    XMLString::copyString(tempStr, name);    XMLString::transcode("TestBody", tempStr2, 3999);    XMLString::catString(tempStr, tempStr2);    DOMElement* docBody = doc->createElement(tempStr);    docFirstElement->appendChild(docBody);    //name + "BodyLevel21"    XMLString::copyString(tempStr, name);    XMLString::transcode("BodyLevel21", tempStr2, 3999);    XMLString::catString(tempStr, tempStr2);    DOMElement* docBodyLevel21 = doc->createElement(tempStr);    //name + "BodyLevel22"    XMLString::copyString(tempStr, name);    XMLString::transcode("BodyLevel22", tempStr2, 3999);    XMLString::catString(tempStr, tempStr2);    DOMElement* docBodyLevel22 = doc->createElement(tempStr);    //name + "BodyLevel23"    XMLString::copyString(tempStr, name);    XMLString::transcode("BodyLevel23", tempStr2, 3999);    XMLString::catString(tempStr, tempStr2);    DOMElement* docBodyLevel23 = doc->createElement(tempStr);    //name + "BodyLevel24"    XMLString::copyString(tempStr, name);    XMLString::transcode("BodyLevel24", tempStr2, 3999);    XMLString::catString(tempStr, tempStr2);    DOMElement* docBodyLevel24 = doc->createElement(tempStr);    docBody->appendChild(docBodyLevel21);    docBody->appendChild(docBodyLevel22);    docBody->appendChild(docBodyLevel23);    docBody->appendChild(docBodyLevel24);    //name + "BodyLevel31"    XMLString::copyString(tempStr, name);    XMLString::transcode("BodyLevel31", tempStr2, 3999);    XMLString::catString(tempStr, tempStr2);    DOMElement* docBodyLevel31 = doc->createElement(tempStr);    //name + "BodyLevel32"    XMLString::copyString(tempStr, name);    XMLString::transcode("BodyLevel32", tempStr2, 3999);    XMLString::catString(tempStr, tempStr2);    DOMElement* docBodyLevel32 = doc->createElement(tempStr);    //name + "BodyLevel33"    XMLString::copyString(tempStr, name);    XMLString::transcode("BodyLevel33", tempStr2, 3999);    XMLString::catString(tempStr, tempStr2);    DOMElement* docBodyLevel33 = doc->createElement(tempStr);    //name + "BodyLevel34"    XMLString::copyString(tempStr, name);    XMLString::transcode("BodyLevel34", tempStr2, 3999);    XMLString::catString(tempStr, tempStr2);    DOMElement* docBodyLevel34 = doc->createElement(tempStr);    docBodyLevel21->appendChild(docBodyLevel31);    docBodyLevel21->appendChild(docBodyLevel32);    docBodyLevel22->appendChild(docBodyLevel33);    docBodyLevel22->appendChild(docBodyLevel34);    //name + "BodyLevel31'sChildTextNode11"    XMLString::copyString(tempStr, name);    XMLString::transcode("BodyLevel31'sChildTextNode11", tempStr2, 3999);    XMLString::catString(tempStr, tempStr2);    DOMText* docTextNode11 = doc->createTextNode(tempStr);    //name + "BodyLevel31'sChildTextNode12"    XMLString::copyString(tempStr, name);    XMLString::transcode("BodyLevel31'sChildTextNode12", tempStr2, 3999);    XMLString::catString(tempStr, tempStr2);    DOMText* docTextNode12 = doc->createTextNode(tempStr);    //name + "BodyLevel31'sChildTextNode13"    XMLString::copyString(tempStr, name);    XMLString::transcode("BodyLevel31'sChildTextNode13", tempStr2, 3999);    XMLString::catString(tempStr, tempStr2);    DOMText* docTextNode13 = doc->createTextNode(tempStr);    //name + "TextNode2"    XMLString::copyString(tempStr, name);    XMLString::transcode("TextNode2", tempStr2, 3999);    XMLString::catString(tempStr, tempStr2);    DOMText* docTextNode2 = doc->createTextNode(tempStr);    //name + "TextNode3"    XMLString::copyString(tempStr, name);    XMLString::transcode("TextNode3", tempStr2, 3999);    XMLString::catString(tempStr, tempStr2);    DOMText* docTextNode3 = doc->createTextNode(tempStr);    //name + "TextNode4"    XMLString::copyString(tempStr, name);    XMLString::transcode("TextNode4", tempStr2, 3999);    XMLString::catString(tempStr, tempStr2);    DOMText* docTextNode4 = doc->createTextNode(tempStr);    docBodyLevel31->appendChild(docTextNode11);    docBodyLevel31->appendChild(docTextNode12);    docBodyLevel31->appendChild(docTextNode13);    docBodyLevel32->appendChild(docTextNode2);    docBodyLevel33->appendChild(docTextNode3);    docBodyLevel34->appendChild(docTextNode4);    //"<![CDATA[<greeting>Hello, world!</greeting>]]>"    XMLString::transcode("<![CDATA[<greeting>Hello, world!</greeting>]]>", tempStr, 3999);    DOMCDATASection* docCDATASection = doc->createCDATASection(tempStr);    docBodyLevel23->appendChild(docCDATASection);    //"This should be a comment of some kind "    XMLString::transcode("This should be a comment of some kind ", tempStr, 3999);    DOMComment* docComment = doc->createComment(tempStr);    //Test compareTreePosition before append    COMPARETREEPOSITIONTEST(docFirstElementAttr, docComment, DOMNode::TREE_POSITION_DISCONNECTED, __LINE__);    docBodyLevel23->appendChild(docComment);    //"ourEntityNode"    XMLString::transcode("ourEntityNode", tempStr, 3999);    DOMEntityReference* docReferenceEntity = doc->createEntityReference(tempStr);    docBodyLevel24->appendChild(docReferenceEntity);    DOMTest make;    //"ourNotationNode"    XMLString::transcode("ourNotationNode", tempStr, 3999);    DOMNotation* docNotation = make.createNotation(doc, tempStr);    DOMNode*  abc1 = doc->getFirstChild();    DOMDocumentType* docType = (DOMDocumentType*) abc1;    DOMNode* rem = docType->getNotations()->setNamedItem(docNotation);    if (rem)        rem->release();//***********Do some quick compareTreePosition tests//The tree now looks like//// docFirstElement (has docFirstElementAttr)//      |//      |_ docProcessInstruction//      |//      |_ docBody//            |//            |_ docBodyLevel21//            |         |//            |         |_ docBodyLevel31//            |         |        |//            |         |        |_ docTextNode11//            |         |        |//            |         |        |_ docTextNode12//            |         |        |//            |         |        |_ docTextNode13//            |         |//            |         |_ docBodyLevel32//            |                  |//            |                  |_ docTextNode2//            |//            |_ docBodyLevel22//            |         |//            |         |_ docBodyLevel33//            |         |        |//            |         |        |_ docTextNode3//            |         |//            |         |//            |         |_ docBodyLevel34//            |                  |//            |                  |_ docTextNode4//            |//            |_ docBodyLevel23//            |         |//            |         |_ docCDATASection//            |         |//            |         |_ docComment//            |//            |_ docBodyLevel24//                      |//                      |_ docReferenceEntity//    COMPARETREEPOSITIONTEST(docProcessingInstruction, docBody, DOMNode::TREE_POSITION_FOLLOWING, __LINE__);    COMPARETREEPOSITIONTEST(docBodyLevel24, docProcessingInstruction, DOMNode::TREE_POSITION_PRECEDING, __LINE__);    COMPARETREEPOSITIONTEST(docBodyLevel23, docBodyLevel21, DOMNode::TREE_POSITION_PRECEDING, __LINE__);    COMPARETREEPOSITIONTEST(docBodyLevel21, docTextNode11, DOMNode::TREE_POSITION_DESCENDANT, __LINE__);    COMPARETREEPOSITIONTEST(docCDATASection, docFirstElement, DOMNode::TREE_POSITION_ANCESTOR, __LINE__);    COMPARETREEPOSITIONTEST(docFirstElement, docFirstElement, DOMNode::TREE_POSITION_SAME_NODE, __LINE__);    COMPARETREEPOSITIONTEST(docFirstElement, docFirstElement, DOMNode::TREE_POSITION_EQUIVALENT, __LINE__);    COMPARETREEPOSITIONTEST(docReferenceEntity, docFirstElement, DOMNode::TREE_POSITION_ANCESTOR, __LINE__);    COMPARETREEPOSITIONTEST(docFirstElementAttr, docFirstElement, DOMNode::TREE_POSITION_PRECEDING, __LINE__);    COMPARETREEPOSITIONTEST(docFirstElementAttr, docProcessingInstruction, DOMNode::TREE_POSITION_FOLLOWING, __LINE__);    COMPARETREEPOSITIONTEST(docProcessingInstruction, docFirstElementAttr, DOMNode::TREE_POSITION_PRECEDING, __LINE__);    COMPARETREEPOSITIONTEST(docFirstElementAttr, doc, DOMNode::TREE_POSITION_PRECEDING, __LINE__);    COMPARETREEPOSITIONTEST(doc, docFirstElementAttr, DOMNode::TREE_POSITION_FOLLOWING, __LINE__);    COMPARETREEPOSITIONTEST(docBodyLevel21, docBodyLevel22, DOMNode::TREE_POSITION_FOLLOWING, __LINE__);    COMPARETREEPOSITIONTEST(docNotation, docFirstElement, DOMNode::TREE_POSITION_DISCONNECTED, __LINE__);    //now do some lookupNamespaceURI and lookupNamespacePrefix    //first lets add some attributes    XMLString::transcode("http://www.w3.org/2000/xmlns/", tempStr, 3999);    XMLString::transcode("xmlns:pre1", tempStr2, 3999);    XMLString::transcode("pre1URI", tempStr3, 3999);    XMLString::transcode("pre1", tempStr4, 3999);    DOMAttr *attr1 = doc->createAttributeNS(tempStr, tempStr2);    attr1->setValue(tempStr3);    docFirstElement->setAttributeNodeNS(attr1);    LOOKUPNSTEST(docProcessingInstruction, tempStr4, tempStr3, true, __LINE__);    LOOKUPNSTEST(docBodyLevel24, tempStr4, tempStr3, true, __LINE__);    LOOKUPNSTEST(docBodyLevel23, tempStr4, tempStr3, true, __LINE__);    LOOKUPNSTEST(docBodyLevel21, tempStr4, tempStr3, true, __LINE__);    LOOKUPNSTEST(docBodyLevel31, tempStr4, tempStr3, true, __LINE__);    LOOKUPNSTEST(docBodyLevel32, tempStr4, tempStr3, true, __LINE__);    LOOKUPNSTEST(docCDATASection, tempStr4, tempStr3, true, __LINE__);    LOOKUPNSTEST(docFirstElement, tempStr4, tempStr3, true, __LINE__);    LOOKUPNSTEST(docReferenceEntity, tempStr4, tempStr3, true, __LINE__);    LOOKUPNSTEST(docFirstElementAttr, tempStr4, tempStr3, true, __LINE__);    LOOKUPNSTEST(doc, tempStr4, tempStr3, true, __LINE__);    LOOKUPNSTEST(docNotation, tempStr4, tempStr3, false, __LINE__);    LOOKUPNSTEST(docTextNode2, tempStr4, tempStr3, true, __LINE__);    LOOKUPNSTEST(docTextNode4, tempStr4, tempStr3, true, __LINE__);    LOOKUPNSTEST(docComment, tempStr4, tempStr3, true, __LINE__);    XMLString::transcode("xmlns:pre2", tempStr2, 3999);    XMLString::transcode("pre2URI", tempStr3, 3999);    XMLString::transcode("pre2", tempStr4, 3999);    DOMAttr *attr2 = doc->createAttributeNS(tempStr, tempStr2);    attr2->setValue(tempStr3);    docBodyLevel21->setAttributeNodeNS(attr2);    LOOKUPNSTEST(docProcessingInstruction, tempStr4, tempStr3, false, __LINE__);    LOOKUPNSTEST(docBodyLevel24, tempStr4, tempStr3, false, __LINE__);    LOOKUPNSTEST(docBodyLevel23, tempStr4, tempStr3, false, __LINE__);    LOOKUPNSTEST(docBodyLevel21, tempStr4, tempStr3, true, __LINE__);    LOOKUPNSTEST(docBodyLevel31, tempStr4, tempStr3, true, __LINE__);    LOOKUPNSTEST(docBodyLevel32, tempStr4, tempStr3, true, __LINE__);    LOOKUPNSTEST(docCDATASection, tempStr4, tempStr3, false, __LINE__);    LOOKUPNSTEST(docFirstElement, tempStr4, tempStr3, false, __LINE__);    LOOKUPNSTEST(docReferenceEntity, tempStr4, tempStr3, false, __LINE__);    LOOKUPNSTEST(docFirstElementAttr, tempStr4, tempStr3, false, __LINE__);    LOOKUPNSTEST(doc, tempStr4, tempStr3, false, __LINE__);    LOOKUPNSTEST(docNotation, tempStr4, tempStr3, false, __LINE__);    LOOKUPNSTEST(docComment, tempStr4, tempStr3, false, __LINE__);    LOOKUPNSTEST(docTextNode2, tempStr4, tempStr3, true, __LINE__);    LOOKUPNSTEST(docTextNode4, tempStr4, tempStr3, false, __LINE__);    XMLString::transcode("xmlns", tempStr2, 3999);    XMLString::transcode("default", tempStr3, 3999);    XMLString::transcode("", tempStr4, 3999);    DOMAttr *attr3 = doc->createAttributeNS(tempStr, tempStr2);    attr3->setValue(tempStr3);    docFirstElement->setAttributeNodeNS(attr3);    LOOKUPNSTEST(docProcessingInstruction, 0, tempStr3, true, __LINE__);    LOOKUPNSTEST(docBodyLevel24, 0, tempStr3, true, __LINE__);    LOOKUPNSTEST(docBodyLevel23, 0, tempStr3, true, __LINE__);    LOOKUPNSTEST(docBodyLevel21, 0, tempStr3, true, __LINE__);    LOOKUPNSTEST(docBodyLevel31, 0, tempStr3, true, __LINE__);    LOOKUPNSTEST(docBodyLevel32, 0, tempStr3, true, __LINE__);    LOOKUPNSTEST(docCDATASection, 0, tempStr3, true, __LINE__);    LOOKUPNSTEST(docFirstElement, 0, tempStr3, true, __LINE__);    LOOKUPNSTEST(docReferenceEntity, 0, tempStr3, true, __LINE__);    LOOKUPNSTEST(docFirstElementAttr, 0, tempStr3, true, __LINE__);    LOOKUPNSTEST(doc, 0, tempStr3, true, __LINE__);    LOOKUPNSTEST(docComment, 0, tempStr3, true, __LINE__);    LOOKUPNSTEST(docTextNode2, 0, tempStr3, true, __LINE__);    LOOKUPNSTEST(docTextNode4, 0, tempStr3, true, __LINE__);    //this has to be done separately because negative lookup is the same as default ns lookup!!!    prefixResult = XMLString::compareString(docNotation->lookupNamespacePrefix(tempStr3, false), 0);    prefixResult2 = XMLString::compareString(docNotation->lookupNamespacePrefix(tempStr3, true), 0);    uriResult = XMLString::compareString(docNotation->lookupNamespaceURI(0), 0);    if(prefixResult != 0) {        fprintf(stderr, "DOMNode::lookupNamespacePrefix does not work in line %i\n", __LINE__);        OK = false;    }    if(prefixResult2 != 0) {        fprintf(stderr, "DOMNode::lookupNamespacePrefix does not work in line %i\n", __LINE__);        OK = false;    }    if(uriResult != 0) {        fprintf(stderr, "DOMNode::lookupNamespacePrefix does not work in line %i\n", __LINE__);        OK = false;    }    XMLString::transcode("notset", tempStr3, 3999);    LOOKUPDEFAULTNSTEST(docProcessingInstruction, tempStr3, false, __LINE__);    LOOKUPDEFAULTNSTEST(docBodyLevel24, tempStr3, false, __LINE__);    LOOKUPDEFAULTNSTEST(docBodyLevel23, tempStr3, false, __LINE__);

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?