/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/*
* $Id: SAX2PrintHandlers.cpp 676911 2008-07-15 13:27:32Z amassari $
*/
// ---------------------------------------------------------------------------
// Includes
// ---------------------------------------------------------------------------
#include <xercesc/util/XMLUniDefs.hpp>
#include <xercesc/sax2/Attributes.hpp>
#include "SAX2Print.hpp"
//#include <stdio.h> //20170209 gu
// ---------------------------------------------------------------------------
// Local const data
//
// Note: This is the 'safe' way to do these strings. If you compiler supports
// L"" style strings, and portability is not a concern, you can use
// those types constants directly.
// ---------------------------------------------------------------------------
static const XMLCh gEndElement[] = { chOpenAngle, chForwardSlash, chNull };
static const XMLCh gEndPI[] = { chQuestion, chCloseAngle, chNull };
static const XMLCh gStartPI[] = { chOpenAngle, chQuestion, chNull };
static const XMLCh gXMLDecl1[] =
{
chOpenAngle, chQuestion, chLatin_x, chLatin_m, chLatin_l
, chSpace, chLatin_v, chLatin_e, chLatin_r, chLatin_s, chLatin_i
, chLatin_o, chLatin_n, chEqual, chDoubleQuote, chDigit_1, chPeriod
, chDigit_0, chDoubleQuote, chSpace, chLatin_e, chLatin_n, chLatin_c
, chLatin_o, chLatin_d, chLatin_i, chLatin_n, chLatin_g, chEqual
, chDoubleQuote, chNull
};
static const XMLCh gXMLDecl2[] =
{
chDoubleQuote, chQuestion, chCloseAngle
, chLF, chNull
};
// ---------------------------------------------------------------------------
// SAX2PrintHandlers: Constructors and Destructor
// ---------------------------------------------------------------------------
SAX2PrintHandlers::SAX2PrintHandlers( const char* const encodingName
, const XMLFormatter::UnRepFlags unRepFlags
, const bool expandNamespaces) :
fFormatter
(
encodingName
, 0
, this
, XMLFormatter::NoEscapes
, unRepFlags
),
fExpandNS ( expandNamespaces )
{
//
// Go ahead and output an XML Decl with our known encoding. This
// is not the best answer, but its the best we can do until we
// have SAX2 support.
//
fFormatter << gXMLDecl1 << fFormatter.getEncodingName() << gXMLDecl2;
}
SAX2PrintHandlers::~SAX2PrintHandlers()
{
}
// ---------------------------------------------------------------------------
// SAX2PrintHandlers: Overrides of the output formatter target interface
// ---------------------------------------------------------------------------
void SAX2PrintHandlers::writeChars(const XMLByte* const /* toWrite */)
{
}
void SAX2PrintHandlers::writeChars(const XMLByte* const toWrite,
const XMLSize_t count,
XMLFormatter* const /* formatter */)
{
// For this one, just dump them to the standard output
// Surprisingly, Solaris was the only platform on which
// required the char* cast to print out the string correctly.
// Without the cast, it was printing the pointer value in hex.
// Quite annoying, considering every other platform printed
// the string with the explicit cast to char* below.
//20170209gu
XERCES_STD_QUALIFIER cout.write((char *) toWrite, (int) count);
XERCES_STD_QUALIFIER cout.flush(); //void flush():------------------------冲刷次数据流,使流内的数据都被写出
/*
if(JobID[0]!='\0'){
cout<<JobID[36]<<endl;
} */
/*
ofs.open("E:\\test.txt",ios::binary |ios::app);
ofs.write((char *) toWrite, (int) count);
ofs.flush(); //20170209进度,void flush():---冲刷次数据流,使流内的数据都被写出
ofs.close(); */
/*
if((fp=fopen("E:\\test.txt","at")) == NULL)
//判断文件(txt文件)是否打开成功
//a 以附加的方式打开只写文件。"t"为txt文件之意
{
printf("WRITE test.txt cannot be opened! \n");
exit(0);
} */
// fp.write((char *) toWrite, (int) count);
// fp.flush();
}
// ---------------------------------------------------------------------------
// SAX2PrintHandlers: Overrides of the SAX ErrorHandler interface
// ---------------------------------------------------------------------------
void SAX2PrintHandlers::error(const SAXParseException& e)
{
XERCES_STD_QUALIFIER cerr << "\nError at file " << StrX(e.getSystemId())
<< ", line " << e.getLineNumber()
<< ", char " << e.getColumnNumber()
<< "\n Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
}
void SAX2PrintHandlers::fatalError(const SAXParseException& e)
{
XERCES_STD_QUALIFIER cerr << "\nFatal Error at file " << StrX(e.getSystemId())
<< ", line " << e.getLineNumber()
<< ", char " << e.getColumnNumber()
<< "\n Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
}
void SAX2PrintHandlers::warning(const SAXParseException& e)
{
XERCES_STD_QUALIFIER cerr << "\nWarning at file " << StrX(e.getSystemId())
<< ", line " << e.getLineNumber()
<< ", char " << e.getColumnNumber()
<< "\n Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
}
// ---------------------------------------------------------------------------
// SAX2PrintHandlers: Overrides of the SAX DTDHandler interface
// ---------------------------------------------------------------------------
void SAX2PrintHandlers::unparsedEntityDecl(const XMLCh* const /* name */
, const XMLCh* const /* publicId */
, const XMLCh* const /* systemId */
, const XMLCh* const /* notationName */)
{
// Not used at this time
}
void SAX2PrintHandlers::notationDecl(const XMLCh* const /* name */
, const XMLCh* const /* publicId */
, const XMLCh* const /* systemId */)
{
// Not used at this time
}
// ---------------------------------------------------------------------------
// SAX2PrintHandlers: Overrides of the SAX DocumentHandler interface
// ---------------------------------------------------------------------------
void SAX2PrintHandlers::characters(const XMLCh* const chars
, const XMLSize_t length)
{
// fFormatter.formatBuf(chars, length, XMLFormatter::CharEscapes);
//currentText=*chars; //20170212guminghui 22:26
//20170212guminghui 22:26
/*
for(int i=0; i<length; i++){ //20170212guminghui 22:26
currentText[i]==(char)(chars[i]);
} */
currentText=chars;
//strcpy(currentText,chars); + currentText 0x0130ab70 "a2df5201-1e50-4578-b579-83b650dbf95a" const wchar_t *
}
void SAX2PrintHandlers::endDocument()
{
}
void SAX2PrintHandlers::endElement(const XMLCh* const uri,
const XMLCh* const localname,
const XMLCh* const qname)
{
/*
// No escapes are legal here
fFormatter << XMLFormatter::NoEscapes << gEndElement ;
if ( fExpandNS )
{
if (XMLString::compareIString(uri,XMLUni::fgZeroLenString) != 0)
fFormatter << uri << chColon;
fFormatter << localname << chCloseAngle;
}
else
fFormatt
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
SAX2Print.zip (37个子文件)
SAX2Print
Debug
SAX2Print.pdb 1003KB
xerces-c_3_1D.dll 3.73MB
SAX2Print.exe 115KB
SAX2Print.ilk 996KB
ipch
sax2print-d7e3bfeb
sax2print-1547eb37.ipch 15.88MB
SAX2Print.sdf 8.08MB
SAX2Print
SAX2Print.vcxproj 4KB
SAX2PrintHandlers.hpp 5KB
Debug
cl.command.1.tlog 3KB
SAX2Print.log 2KB
CL.read.1.tlog 46KB
vc100.idb 571KB
mt.read.1.tlog 902B
SAX2Print.Build.CppClean.log 2KB
SAX2Print.vcxprojResolveAssemblyReference.cache 713B
link.read.1.tlog 2KB
link.write.1.tlog 1KB
CL.write.1.tlog 3KB
SAX2FilterHandlers.obj 83KB
SAX2PrintHandlers.obj 232KB
vc100.pdb 412KB
link.command.1.tlog 2KB
SAX2Print.exe.intermediate.manifest 381B
mt.write.1.tlog 444B
SAX2Print.write.1.tlog 0B
mt.command.1.tlog 624B
SAX2Print.obj 73KB
SAX2Print.lastbuildstate 106B
SAX2FilterHandlers.cpp 6KB
SAX2Print.cpp 12KB
SAX2PrintHandlers.cpp 14KB
SAX2Print.vcxproj.user 143B
SAX2Print.hpp 3KB
SAX2Print.vcxproj.filters 1KB
SAX2FilterHandlers.hpp 2KB
SAX2Print.sln 894B
SAX2Print.suo 47KB
共 37 条
- 1
资源评论
guzi19801130
- 粉丝: 2
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功