本文整理汇总了C++中XercesDOMParser::adoptDocument方法的典型用法代码示例。如果您正苦于以下问题:C++ XercesDOMParser::adoptDocument方法的具体用法?C++ XercesDOMParser::adoptDocument怎么用?C++ XercesDOMParser::adoptDocument使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类XercesDOMParser
的用法示例。
在下文中一共展示了XercesDOMParser::adoptDocument方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: parseHTML
Parser* parseHTML(std::string contents) {
try {
XMLPlatformUtils::Initialize();
} catch (const XMLException& toCatch) {
char* msg = XMLString::transcode(toCatch.getMessage());
cout << "INIT_ERR:" << endl;
cout << msg << endl;
XMLString::release(&msg);
return NULL;
}
XercesDOMParser* parser = new XercesDOMParser();
parser->setValidationScheme(XercesDOMParser::Val_Always);
parser->setDoNamespaces(true);
ErrorHandler* err = (ErrorHandler*) new HandlerBase();
parser->setErrorHandler(err);
try {
MemBufInputSource xml((const XMLByte*)contents.c_str(), contents.size(), "html", false);
parser->parse(xml);
parser->adoptDocument();
delete parser;
delete err;
XMLPlatformUtils::Terminate();
return parser;
} catch (const XMLException &toCatch) {
char* msg = XMLString::transcode(toCatch.getMessage());
cout << "XML_ERR: ";
cout << msg << endl;
XMLString::release(&msg);
return parser;
} catch (const DOMException &toCatch) {
char* msg = XMLString::transcode(toCatch.getMessage());
cout << "DOM_ERR: ";
cout << msg << endl;
XMLString::release(&msg);
return parser;
} catch (const SAXException &toCatch) {
char* msg = XMLString::transcode(toCatch.getMessage());
cout << "SAX_ERR: ";
cout << msg << endl;
XMLString::release(&msg);
return parser;
} catch (...) {
cout << "!UNKNOWN_ERR!" << endl;
return parser;
}
delete parser;
delete err;
XMLPlatformUtils::Terminate();
return NULL;
}
示例2: ParseThread
//.........这里部分代码省略.........
if (!pThis->m_bAbort && pThis->m_FileName.length() > 0) {
CBindStatCallbackObj *pCallbackObj = NULL;
HRESULT hr = CBindStatCallbackObj::CreateInstance(&pCallbackObj);
if (S_OK != hr)
pCallbackObj = NULL;
if (pCallbackObj != NULL) {
pCallbackObj->AddRef();
pCallbackObj->m_pDoc = pThis;
}
TCHAR name[MAX_PATH] = _T("");
if (pThis->m_bAsync)
pThis->PostMessage(MSG_READY_STATE_CHANGE,1);
hr = URLDownloadToCacheFile(NULL,pThis->m_FileName,name,URLOSTRM_GETNEWESTVERSION,0,pCallbackObj);
if (pCallbackObj != NULL)
pCallbackObj->Release();
if (E_ABORT == hr)
pThis->m_bAbort = true;
else {
if (S_OK != hr) {
_bstr_t error = _T("Failed to download ") + pThis->m_FileName + _T(": ");
_com_error comError(hr);
error += comError.ErrorMessage();
pThis->m_pParseError->SetData(1,pThis->m_FileName,error,_T(""),0,0,0);
pThis->m_bParseError = true;
}
}
if (S_OK == hr) {
pThis->m_FileName = name;
if (pThis->m_bAsync)
pThis->PostMessage(MSG_READY_STATE_CHANGE,2);
}
}
XercesDOMParser parser;
//
// If set to true then an node supporting IXMLDOMProcessingInstruction
// is added for the XML declaration.
//
// Setting to true in a custom DLL will better mimic
// MSXML.DLL but at a cost of conformance errors
// using David Brownell's suite
//parser.setToCreateXMLDeclTypeNode(false);
parser.setIncludeIgnorableWhitespace(pThis->m_bPreserveWhiteSpace);
if (!pThis->m_bParseError && !pThis->m_bAbort) {
parser.setDoValidation(pThis->m_bThreadValidate);
//
// this brings the COM component into better mimicry to MSXML
// by not throwing a validation error when there is no DOCTYPE
//
parser.setValidationScheme(pThis->m_bThreadValidate ? AbstractDOMParser::Val_Auto : AbstractDOMParser::Val_Never);
}
if (!pThis->m_bParseError && !pThis->m_bAbort)
parser.setErrorHandler(pThis);
if (!pThis->m_bParseError && !pThis->m_bAbort)
pThis->m_pParseError->Reset();
if (!pThis->m_bParseError && !pThis->m_bAbort)
pThis->m_bParseError = false;
try
{
if (!pThis->m_bParseError && !pThis->m_bAbort) {
if (pThis->m_FileName.length() > 0)
parser.parse(static_cast<LPCTSTR> (pThis->m_FileName));
else {
XMLByte *pXMLByte = reinterpret_cast<XMLByte*> (static_cast<XMLCh*>(pThis->m_xml));
MemBufInputSource memBufIS(pXMLByte,pThis->m_xml.length()*sizeof(XMLCh),OLESTR("IBMXMLParser"),false);
memBufIS.setEncoding(OLESTR("UTF-16LE"));
if (!pThis->m_bParseError && !pThis->m_bAbort)
parser.parse(memBufIS);
}
}
}
catch(...)
{
pThis->m_bParseError = true;
return 0;
}
if (!pThis->m_bParseError && !pThis->m_bAbort)
pThis->m_TmpDocument = parser.adoptDocument();
if (!pThis->m_bParseError && !pThis->m_bAbort && pThis->m_bAsync)
pThis->PostMessage(MSG_READY_STATE_CHANGE,4);
return 0;
}
示例3: resIdentifier
DOMDocument *
XIncludeUtils::doXIncludeXMLFileDOM(const XMLCh *href,
const XMLCh *relativeHref,
DOMNode *includeNode,
DOMDocument *parsedDocument,
XMLEntityHandler* entityResolver){
if (XIncludeUtils::isInCurrentInclusionHistoryStack(href)){
/* including something back up the current history */
XIncludeUtils::reportError(parsedDocument, XMLErrs::XIncludeCircularInclusionLoop,
href, href);
return NULL;
}
if (XMLString::equals(href, parsedDocument->getBaseURI())){
/* trying to include itself */
XIncludeUtils::reportError(parsedDocument, XMLErrs::XIncludeCircularInclusionDocIncludesSelf,
href, href);
return NULL;
}
/* Instantiate the DOM parser. */
XercesDOMParser parser;
parser.setDoNamespaces(true);
/* don't want to recurse the xi processing here */
parser.setDoXInclude(false);
/* create the schema info nodes, so that we can detect conflicting notations */
parser.setCreateSchemaInfo(true);
XMLInternalErrorHandler xierrhandler;
parser.setErrorHandler(&xierrhandler);
DOMDocument *includedNode = NULL;
try {
InputSource* is=NULL;
Janitor<InputSource> janIS(is);
if(entityResolver) {
XMLResourceIdentifier resIdentifier(XMLResourceIdentifier::ExternalEntity,
relativeHref,
NULL,
NULL,
includeNode->getBaseURI());
is=entityResolver->resolveEntity(&resIdentifier);
janIS.reset(is);
}
if(janIS.get()!=NULL)
parser.parse(*janIS.get());
else
parser.parse(href);
/* need to be able to release the parser but keep the document */
if (!xierrhandler.getSawError() && !xierrhandler.getSawFatal())
includedNode = parser.adoptDocument();
}
catch (const XMLException& /*toCatch*/)
{
XIncludeUtils::reportError(parsedDocument, XMLErrs::XIncludeResourceErrorWarning,
href, href);
}
catch (const DOMException& /*toCatch*/)
{
XIncludeUtils::reportError(parsedDocument, XMLErrs::XIncludeResourceErrorWarning,
href, href);
}
catch (...)
{
XIncludeUtils::reportError(parsedDocument, XMLErrs::XIncludeResourceErrorWarning,
href, href);
}
//addDocumentURIToCurrentInclusionHistoryStack(href);
if(includedNode != NULL){
/* baseURI fixups - see http://www.w3.org/TR/xinclude/#base for details. */
DOMElement *topLevelElement = includedNode->getDocumentElement();
if (topLevelElement && topLevelElement->getNodeType() == DOMNode::ELEMENT_NODE ){
XMLUri parentURI(includeNode->getBaseURI());
XMLUri includedURI(includedNode->getBaseURI());
/* if the paths differ we need to add a base attribute */
if (!XMLString::equals(parentURI.getPath(), includedURI.getPath())){
if (getBaseAttrValue(topLevelElement) == NULL){
/* need to calculate the proper path difference to get the relativePath */
topLevelElement->setAttribute(fgXIBaseAttrName, relativeHref);
} else {
/* the included node has base of its own which takes precedence */
XIncludeLocation xil(getBaseAttrValue(topLevelElement));
if (getBaseAttrValue(includeNode) != NULL){
/* prepend any specific base modification of the xinclude node */
xil.prependPath(getBaseAttrValue(includeNode));
}
topLevelElement->setAttribute(fgXIBaseAttrName, xil.getLocation());
}
}
}
}
return includedNode;
}
示例4: evaluate
//.........这里部分代码省略.........
errorCount = parser->getErrorCount();
if (errorCount > 0)
errorsOccured = true;
}
catch (const XMLException& e)
{
cerr << "An error occured during parsing\n Message: "
<< e.getMessage() << endl;
errorsOccured = true;
}
catch (const DOMException& e)
{
cerr << "A DOM error occured during parsing\n DOMException code: "
<< e.code << endl;
errorsOccured = true;
}
if (errorsOccured) {
cout << "Errors during parse" << endl;
return (2);
}
/*
Now that we have the parsed file, get the DOM document and start looking at it
*/
doc = parser->adoptDocument();
}
else {
// Create an empty document
XMLCh tempStr[100];
XMLString::transcode("Core", tempStr, 99);
DOMImplementation *impl = DOMImplementationRegistry::getDOMImplementation(tempStr);
doc = impl->createDocument(
0, // root element namespace URI.
MAKE_UNICODE_STRING("ADoc"), // root element name
NULL);// DOMDocumentType()); // document type object (DTD).
}
XSECProvider prov;
XENCCipher * cipher = prov.newCipher(doc);
if (kek != NULL)
cipher->setKEK(kek);
if (key != NULL)
cipher->setKey(key);
try {
if (doDecrypt) {
if (useInteropResolver == true) {
// Map out base path of the file
char path[_MAX_PATH];
char baseURI[(_MAX_PATH * 2) + 10];
getcwd(path, _MAX_PATH);
示例5: main
int main(int argc, char** argv)
{
if(argc != 3){
cerr << "Usage: " << argv[0] << " file1.xml file2.xml" << endl;
}
string filename1 = string(argv[1]);
string filename2 = string(argv[2]);
XMLPlatformUtils::Initialize();
XercesDOMParser * parser = new XercesDOMParser();
parser->parse(filename1.c_str());
DOMDocument * doc1 = parser->adoptDocument();
parser->parse(filename2.c_str());
DOMDocument * doc2 = parser->adoptDocument();
XMLCh* tmp = XMLString::transcode("iteration");
DOMNodeList* list1 = doc1->getElementsByTagName(tmp);
DOMNodeList* list2 = doc2->getElementsByTagName(tmp);
XMLString::release(&tmp);
if(list1->getLength() != list2->getLength()){
cout << "Different number of iterations: " << list1->getLength() << " vs " <<list2->getLength() << std::endl;
exit(1);
}
bool correct = true;
for(unsigned iter = 0; iter < list1->getLength(); iter++){
bool iter_correct = true;
DOMElement * it1 = dynamic_cast<DOMElement*>(list1->item(iter));
DOMElement * it2 = dynamic_cast<DOMElement*>(list2->item(iter));
XMLCh* tmp = XMLString::transcode("etotal");
DOMElement* child1 = dynamic_cast<DOMElement*>(it1->getElementsByTagName(tmp)->item(0));
DOMElement* child2 = dynamic_cast<DOMElement*>(it2->getElementsByTagName(tmp)->item(0));
XMLString::release(&tmp);
double etotal1 = strtod(XMLString::transcode(child1->getTextContent()), NULL);
double etotal2 = strtod(XMLString::transcode(child2->getTextContent()), NULL);
cout << endl;
cout << "Energy 1 = " << scientific << etotal1 << endl;
cout << "Energy 2 = " << scientific << etotal2 << endl;
cout << "Difference = " << scientific << fabs(etotal1 - etotal2) << endl;
if(fabs(etotal1 - etotal2) > energy_tol){
iter_correct = false;
}
correct = correct && iter_correct;
cout << endl;
cout << "Iteration\t" << iter << "\t:\t";
if(iter_correct){
cout << "[ OK ]" << endl;
} else {
cout << "[ FAIL ]" << endl;
}
}
doc1->release();
doc2->release();
XMLPlatformUtils::Terminate();
if(!correct) return 1;
}
示例6: LoadDocument
int ParameterManager::LoadDocument(const XERCES_CPP_NAMESPACE_QUALIFIER InputSource& inputSource)
{
//
// Create our parser, then attach an error handler to the parser.
// The parser will call back to methods of the ErrorHandler if it
// discovers errors during the course of parsing the XML document.
//
XercesDOMParser *parser = new XercesDOMParser;
parser->setValidationScheme(gValScheme);
parser->setDoNamespaces(gDoNamespaces);
parser->setDoSchema(gDoSchema);
parser->setValidationSchemaFullChecking(gSchemaFullChecking);
parser->setCreateEntityReferenceNodes(gDoCreate);
DOMTreeErrorReporter *errReporter = new DOMTreeErrorReporter();
parser->setErrorHandler(errReporter);
//
// Parse the XML file, catching any XML exceptions that might propagate
// out of it.
//
bool errorsOccured = false;
try {
parser->parse(inputSource);
}
catch (const XMLException& e) {
std::cerr << "An error occurred during parsing\n Message: "
<< StrX(e.getMessage()) << std::endl;
errorsOccured = true;
}
catch (const DOMException& e) {
std::cerr << "A DOM error occurred during parsing\n DOMException code: "
<< e.code << std::endl;
errorsOccured = true;
}
catch (...) {
std::cerr << "An error occurred during parsing\n " << std::endl;
errorsOccured = true;
}
if (errorsOccured) {
delete parser;
delete errReporter;
return 0;
}
_pDocument = parser->adoptDocument();
delete parser;
delete errReporter;
if (!_pDocument)
throw XMLBaseException("Malformed Parameter document: Invalid document");
DOMElement* rootElem = _pDocument->getDocumentElement();
if (!rootElem)
throw XMLBaseException("Malformed Parameter document: Root group not found");
_pGroupNode = FindElement(rootElem,"FCParamGroup","Root");
if (!_pGroupNode)
throw XMLBaseException("Malformed Parameter document: Root group not found");
return 1;
}