亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? xmlwriter.cpp

?? This software aims to create an applet and panel tools to manage a wireless interface card, such as
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
//
// XMLWriter.cpp
//
// $Id: //poco/Main/XML/src/XMLWriter.cpp#5 $
//
// Copyright (c) 2004, Guenter Obiltschnig/Applied Informatics.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions
// are met:
//
// 1. Redistributions of source code must retain the above copyright
//    notice, this list of conditions and the following disclaimer.
//
// 2. Redistributions in binary form must reproduce the above copyright
//    notice, this list of conditions and the following disclaimer in the
//    documentation and/or other materials provided with the distribution.
//
// 3. Redistributions in any form must be accompanied by information on
//    how to obtain complete source code for this software and any
//    accompanying software that uses this software.  The source code
//    must either be included in the distribution or be available for no
//    more than the cost of distribution plus a nominal fee, and must be
//    freely redistributable under reasonable conditions.  For an
//    executable file, complete source code means the source code for all
//    modules it contains.  It does not include source code for modules or
//    files that typically accompany the major components of the operating
//    system on which the executable file runs.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
// COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// POSSIBILITY OF SUCH DAMAGE.
//


#include "XML/XMLWriter.h"
#include "XML/XMLString.h"
#include "XML/XMLException.h"
#include "SAX/AttributesImpl.h"
#include "Foundation/UTF8Encoding.h"
#include <sstream>


XML_BEGIN


const std::string XMLWriter::NEWLINE_DEFAULT;
const std::string XMLWriter::NEWLINE_CR         = "\r";
const std::string XMLWriter::NEWLINE_CRLF       = "\r\n";
const std::string XMLWriter::NEWLINE_LF         = "\n";
const std::string XMLWriter::MARKUP_QUOTENC     = "&quot;";
const std::string XMLWriter::MARKUP_APOSENC     = "&apos;";
const std::string XMLWriter::MARKUP_AMPENC      = "&amp;";
const std::string XMLWriter::MARKUP_LTENC       = "&lt;";
const std::string XMLWriter::MARKUP_GTENC       = "&gt;";
const std::string XMLWriter::MARKUP_LT          = "<";
const std::string XMLWriter::MARKUP_GT          = ">";
const std::string XMLWriter::MARKUP_SLASHGT     = "/>";
const std::string XMLWriter::MARKUP_LTSLASH     = "</";
const std::string XMLWriter::MARKUP_COLON       = ":";
const std::string XMLWriter::MARKUP_EQQUOT      = "=\"";
const std::string XMLWriter::MARKUP_QUOT        = "\"";
const std::string XMLWriter::MARKUP_SPACE       = " ";
const std::string XMLWriter::MARKUP_TAB         = "\t";
const std::string XMLWriter::MARKUP_BEGIN_CDATA = "<![CDATA[";
const std::string XMLWriter::MARKUP_END_CDATA   = "]]>";


#if defined(XML_UNICODE_WCHAR_T)
	#define NATIVE_ENCODING Foundation::UTF16Encoding
#else
	#define NATIVE_ENCODING Foundation::UTF8Encoding
#endif


XMLWriter::XMLWriter(XMLByteOutputStream& str, int options):
	_pTextConverter(0),
	_pInEncoding(new NATIVE_ENCODING),
	_pOutEncoding(new Foundation::UTF8Encoding),
	_options(options),
	_encoding("UTF-8"),
	_depth(-1),
	_elementCount(0),
	_inFragment(false),
	_inCDATA(false),
	_inDTD(false),
	_inInternalDTD(false),
	_contentWritten(false),
	_unclosedStartTag(false),
	_prefix(0)
{
	_pTextConverter = new Foundation::OutputStreamConverter(str, *_pInEncoding, *_pOutEncoding);
	setNewLine(NEWLINE_DEFAULT);
}


XMLWriter::XMLWriter(XMLByteOutputStream& str, int options, const std::string& encodingName, Foundation::TextEncoding& textEncoding):
	_pTextConverter(0),
	_pInEncoding(new NATIVE_ENCODING),
	_pOutEncoding(0),
	_options(options),
	_encoding(encodingName),
	_depth(-1),
	_elementCount(0),
	_inFragment(false),
	_inCDATA(false),
	_inDTD(false),
	_inInternalDTD(false),
	_contentWritten(false),
	_unclosedStartTag(false),
	_prefix(0)
{
	_pTextConverter = new Foundation::OutputStreamConverter(str, *_pInEncoding, textEncoding);
	setNewLine(NEWLINE_DEFAULT);
}


XMLWriter::XMLWriter(XMLByteOutputStream& str, int options, const std::string& encodingName, Foundation::TextEncoding* pTextEncoding):
	_pTextConverter(0),
	_pInEncoding(new NATIVE_ENCODING),
	_pOutEncoding(0),
	_options(options),
	_encoding(encodingName),
	_depth(-1),
	_elementCount(0),
	_inFragment(false),
	_inCDATA(false),
	_inDTD(false),
	_inInternalDTD(false),
	_contentWritten(false),
	_unclosedStartTag(false),
	_prefix(0)
{
	if (pTextEncoding)
	{
		_pTextConverter = new Foundation::OutputStreamConverter(str, *_pInEncoding, *pTextEncoding);
	}
	else
	{
		_encoding = "UTF-8";
		_pOutEncoding = new Foundation::UTF8Encoding;
		_pTextConverter = new Foundation::OutputStreamConverter(str, *_pInEncoding, *_pOutEncoding);
	}
	setNewLine(NEWLINE_DEFAULT);
}


XMLWriter::~XMLWriter()
{
	delete _pTextConverter;
	delete _pInEncoding;
	delete _pOutEncoding;
}


void XMLWriter::setDocumentLocator(const Locator* loc)
{
}


void XMLWriter::setNewLine(const std::string& newLineCharacters)
{
	if (newLineCharacters.empty())
	{
#if defined(_WIN32)
		_newLine = NEWLINE_CRLF;
#else
		_newLine = NEWLINE_LF;
#endif
	}
	else _newLine = newLineCharacters;
}


const std::string& XMLWriter::getNewLine() const
{
	return _newLine;
}


void XMLWriter::startDocument()
{
	if (_depth != -1)
		throw XMLException("Cannot start a document in another document");

	_inFragment    = false;
	_depth         = 0;
	_elementCount  = 0;
	_inDTD         = false;
	_inInternalDTD = false;
	_prefix        = 0;

	if (_options & WRITE_XML_DECLARATION)
		writeXMLDeclaration();
	
	_contentWritten = true;
	_namespaces.reset();
	_namespaces.pushContext();
}


void XMLWriter::endDocument()
{
	if (_depth > 0)
		throw XMLException("Not well-formed (at least one tag has no matching end tag)");
	if (_elementCount == 0)
		throw XMLException("No document element");

	_elementCount = 0;
	_depth        = -1;
}


void XMLWriter::startFragment()
{
	if (_depth != -1)
		throw XMLException("Cannot start a fragment in another fragment or document");

	_inFragment   = true;
	_depth        = 0;
	_elementCount = 0;
	_prefix       = 0;

	_contentWritten = true;
	_namespaces.reset();
	_namespaces.pushContext();
}


void XMLWriter::endFragment()
{
	if (_depth > 1)
		throw XMLException("Not well-formed (at least one tag has no matching end tag)");
	
	_inFragment   = false;
	_elementCount = 0;
	_depth        = -1;
}


void XMLWriter::startElement(const XMLString& namespaceURI, const XMLString& localName, const XMLString& qname)
{
	AttributesImpl attributes;
	startElement(namespaceURI, localName, qname, attributes);
}


void XMLWriter::startElement(const XMLString& namespaceURI, const XMLString& localName, const XMLString& qname, const Attributes& attributes)
{
	if (_depth == 0 && !_inFragment && _elementCount > 1) 
		throw XMLException("Not well-formed. Second root element found", nameToString(localName, qname));
	
	if (_unclosedStartTag) closeStartTag();
	prettyPrint();
	writeStartElement(namespaceURI, localName, qname, attributes);
	_elementStack.push_back(Name(qname, namespaceURI, localName));
	_contentWritten = false;
	++_depth;
}


void XMLWriter::endElement(const XMLString& namespaceURI, const XMLString& localName, const XMLString& qname)
{
	if (_depth < 1)
		throw XMLException("No unclosed tag");

	if (!_elementStack.back().equalsWeakly(qname, namespaceURI, localName))
		throw XMLException("End tag does not match start tag", nameToString(localName, qname));

	_elementStack.pop_back();
	--_depth;
	if (!_unclosedStartTag) prettyPrint();
	writeEndElement(namespaceURI, localName, qname);
	_contentWritten = false;
	if (_depth == 0)
		writeNewLine();
}


void XMLWriter::emptyElement(const XMLString& namespaceURI, const XMLString& localName, const XMLString& qname)
{
	AttributesImpl attributes;
	emptyElement(namespaceURI, localName, qname, attributes);
}


void XMLWriter::emptyElement(const XMLString& namespaceURI, const XMLString& localName, const XMLString& qname, const Attributes& attributes)
{
	if (_depth == 0 && _elementCount > 1)
		throw XMLException("Not well-formed. Second root element found.");

	if (_unclosedStartTag) closeStartTag();
	prettyPrint();
	writeStartElement(namespaceURI, localName, qname, attributes);
	_contentWritten = false;
}


void XMLWriter::characters(const XMLChar ch[], int start, int length)
{
	if (_unclosedStartTag) closeStartTag();
	_contentWritten = length > 0;
	if (_inCDATA)
	{
		while (length-- > 0) writeXML(ch[start++]);
	}
	else
	{
		while (length-- > 0)
		{
			XMLChar c = ch[start++];
			switch (c)
			{
			case '"':  writeMarkup(MARKUP_QUOTENC); break;
			case '\'': writeMarkup(MARKUP_APOSENC); break;
			case '&':  writeMarkup(MARKUP_AMPENC); break;
			case '<':  writeMarkup(MARKUP_LTENC); break;
			case '>':  writeMarkup(MARKUP_GTENC); break;
			default:
				if (c >= 0 && c < 32)
				{
					if (c == '\t' || c == '\r' || c == '\n')
						writeXML(c);
					else
						throw XMLException("Invalid character token.");
				}
				else writeXML(c);
			}
		}
	}
}


void XMLWriter::characters(const XMLString& str)
{
	characters(str.data(), 0, (int) str.length());
}


void XMLWriter::rawCharacters(const XMLString& str)
{
	writeXML(str);
}


void XMLWriter::ignorableWhitespace(const XMLChar ch[], int start, int length)
{
	characters(ch, start, length);
}


void XMLWriter::processingInstruction(const XMLString& target, const XMLString& data)
{
	if (_unclosedStartTag) closeStartTag();
	prettyPrint();
	writeMarkup("<?");
	writeXML(target);
	if (!data.empty())
	{
		writeMarkup(MARKUP_SPACE);
		writeXML(data);
	}
	writeMarkup("?>");
	if (_depth == 0)
		writeNewLine();
}


void XMLWriter::dataElement(const XMLString& namespaceURI, const XMLString& localName, const XMLString& qname,
                             const XMLString& data,
	                         const XMLString& attr1, const XMLString& value1,
							 const XMLString& attr2, const XMLString& value2,
							 const XMLString& attr3, const XMLString& value3)
{
	static const XMLString CDATA = toXMLString("CDATA");

	AttributesImpl attributes;
	if (!attr1.empty()) attributes.addAttribute(XMLString(), XMLString(), attr1, CDATA, value1);
	if (!attr2.empty()) attributes.addAttribute(XMLString(), XMLString(), attr2, CDATA, value2);
	if (!attr3.empty()) attributes.addAttribute(XMLString(), XMLString(), attr3, CDATA, value3);
	if (data.empty())
	{
		emptyElement(namespaceURI, localName, qname, attributes);
	}
	else
	{
		startElement(namespaceURI, localName, qname, attributes);
		characters(data);
		endElement(namespaceURI, localName, qname);
	}
}


void XMLWriter::startPrefixMapping(const XMLString& prefix, const XMLString& namespaceURI)
{

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品亚洲а∨天堂免在线| 91丨porny丨国产入口| 国产精品高潮久久久久无| 欧美日韩一区三区| 成人黄动漫网站免费app| 热久久久久久久| 亚洲一区国产视频| 国产精品久久久久久久久图文区 | 91精品婷婷国产综合久久性色| 国产酒店精品激情| 美女www一区二区| 亚洲成人久久影院| 亚洲欧美激情在线| 国产片一区二区三区| 欧美mv日韩mv国产| 8x福利精品第一导航| 欧美亚洲动漫精品| 一本大道久久精品懂色aⅴ| 国产成人aaa| 激情综合色综合久久| 青青草视频一区| 亚洲成人久久影院| 亚洲欧洲精品一区二区三区| 久久九九99视频| 国产性色一区二区| 久久久久久久电影| 久久婷婷国产综合精品青草| 日韩免费观看高清完整版| 欧美疯狂性受xxxxx喷水图片| 欧美午夜理伦三级在线观看| 在线精品视频一区二区三四| 色先锋aa成人| 色偷偷久久人人79超碰人人澡| 99国产精品久久久久久久久久久| 高清国产一区二区| 国产成人鲁色资源国产91色综| 国产乱一区二区| 国产精品自拍在线| 粉嫩av一区二区三区| 成人理论电影网| 不卡一区二区在线| 99精品视频一区| 91蜜桃在线免费视频| 欧美在线免费视屏| 欧美日韩夫妻久久| 欧美丰满少妇xxxxx高潮对白| 欧美高清一级片在线| 欧美一级片在线看| 久久综合久久99| 国产精品国产三级国产aⅴ入口| 一色桃子久久精品亚洲| 亚洲综合免费观看高清完整版在线| 尤物av一区二区| 无吗不卡中文字幕| 久久疯狂做爰流白浆xx| 国产99久久久国产精品免费看| www.久久久久久久久| 色国产精品一区在线观看| 欧美日韩免费高清一区色橹橹 | 一个色妞综合视频在线观看| 亚洲一区二区三区在线| 日韩国产在线观看一区| 黄色小说综合网站| 成人国产精品免费观看动漫| 欧美性生活影院| 精品国偷自产国产一区| 国产欧美日韩一区二区三区在线观看 | 日本vs亚洲vs韩国一区三区 | 国产精品全国免费观看高清 | 欧美日韩中文另类| 日韩精品一区二区三区视频在线观看| 亚洲精品一区二区三区精华液| 中文字幕av不卡| 亚洲综合在线第一页| 极品少妇xxxx偷拍精品少妇| 91亚洲资源网| 日韩精品中文字幕一区| 国产精品久99| 蜜臀久久99精品久久久画质超高清 | 日日夜夜一区二区| 成人免费观看视频| 欧美日韩在线播放一区| 国产视频一区二区在线观看| 一区二区激情小说| 国内外成人在线| 欧美三级在线看| 国产欧美中文在线| 石原莉奈在线亚洲三区| 国产一区二区不卡在线| 在线视频你懂得一区| 精品久久久久久久久久久久包黑料 | 国产精品对白交换视频 | 国内精品国产成人国产三级粉色 | 成人国产在线观看| 日韩一区二区在线观看视频播放| 国产精品美女久久久久久久久久久| 手机精品视频在线观看| 99久久国产综合精品麻豆| 欧美成人官网二区| 一区二区在线观看视频| 国产成人精品综合在线观看 | 在线看一区二区| 久久精品人人爽人人爽| 日韩av在线发布| 日本高清成人免费播放| 中文字幕精品一区二区三区精品| 麻豆视频观看网址久久| 欧美日韩国产影片| 一区二区三区在线免费播放| 白白色 亚洲乱淫| 国产亚洲人成网站| 韩国精品在线观看| 欧美一区二区三区在线观看 | 日韩av在线发布| 欧美色精品在线视频| 有码一区二区三区| 91免费看`日韩一区二区| 国产精品美女久久福利网站| 黄一区二区三区| 欧美va亚洲va| 久久精品72免费观看| 9191久久久久久久久久久| 午夜av电影一区| 欧美日韩在线播放三区| 亚洲一区二区三区四区在线观看| 色综合中文字幕国产| 国产日韩欧美电影| 国产黄色成人av| 国产日产欧美精品一区二区三区| 国产在线视频不卡二| 欧美大片拔萝卜| 国产一区二区三区四| 欧美精品一区二区三区四区| 蜜桃av噜噜一区二区三区小说| 欧美日韩色综合| 日本sm残虐另类| 日韩欧美色电影| 国产自产视频一区二区三区 | 亚洲电影一级片| 欧美日韩国产另类不卡| 亚洲v中文字幕| 欧美一区二区三级| 麻豆91在线播放免费| 精品国产乱码久久久久久久| 国产在线视频一区二区| 国产欧美日韩另类一区| 99视频精品免费视频| 一区二区在线电影| 欧美日产国产精品| 久久99热国产| 国产精品你懂的在线| youjizz久久| 亚洲午夜精品在线| 欧美一级在线视频| 国产精品一区二区三区99| 国产精品女人毛片| 一本久久综合亚洲鲁鲁五月天| 亚洲一区二区黄色| 日韩欧美中文字幕制服| 成人小视频在线观看| 亚洲三级理论片| 欧美精品丝袜中出| 国产一区二区三区免费在线观看| 中文字幕一区二区三区在线不卡| 在线日韩国产精品| 蜜臀91精品一区二区三区| 欧美国产97人人爽人人喊| 色av成人天堂桃色av| 老司机精品视频在线| 亚洲图片激情小说| 欧美一区二区三区在线观看视频| 国产成人午夜精品5599| 亚洲综合丁香婷婷六月香| 精品欧美久久久| 一本色道亚洲精品aⅴ| 蜜臀久久99精品久久久画质超高清 | 欧美精品精品一区| 国产999精品久久久久久绿帽| 亚洲精品综合在线| 日韩一区二区免费在线电影| 波多野结衣亚洲一区| 欧美aⅴ一区二区三区视频| 中国色在线观看另类| 日韩一区二区精品| 99精品久久久久久| 韩国理伦片一区二区三区在线播放| 玉足女爽爽91| 国产欧美一区二区在线| 91精品国产91热久久久做人人| 成人禁用看黄a在线| 日本美女一区二区| 亚洲精品成人悠悠色影视| 精品国产一区二区三区不卡| 色八戒一区二区三区| 国产精品自拍在线| 免费看欧美女人艹b| 亚洲另类在线一区| 欧美激情资源网| 精品裸体舞一区二区三区| 欧美精品一卡二卡|