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 + -
显示快捷键?