📄 domparser.cpp
字号:
//**************************************************************************************************************************
//* Blue Xml Extension
//* Copyright (c) 2002-2004 Josh Harler
//*
//* Blue - General Purpose C++ Library
//* Copyright (c) 2002-2004 Josh Harler
//*
//* This software is provided 'as-is', without any express or implied warranty. In no event
//* will the authors be held liable for any damages arising from the use of this software.
//*
//* Permission is granted to anyone to use this software for any purpose, including commercial
//* applications, and to alter it and redistribute it freely, subject to the following restrictions:
//*
//* 1. The origin of this software must not be misrepresented; you must not claim that you
//* wrote the original software. If you use this software in a product, an acknowledgment in the
//* product documentation would be appreciated but is not required.
//*
//* 2. Altered source versions must be plainly marked as such, and must not be misrepresented as
//* being the original software.
//*
//* 3. This notice may not be removed or altered from any source distribution.
//*
//*
//* file Blue/Extension/Xml/DomParser.cpp
//**
// Private Headers =========================================================================================================
// matching header
#include "DomParser.h"
// Private Defines/Enums/Typedefs/Etc ======================================================================================
// Private Classes/Structs =================================================================================================
// Private Global Variables ================================================================================================
// External Global Variables ===============================================================================================
// Private Functions =======================================================================================================
// Functions ===============================================================================================================
namespace blue {
namespace ext {
namespace xml {
// ---------------------------------------------------------------------------------------------------------------------
DomParser::DomParser() :m_document(0), m_current(0)
{
}
// ---------------------------------------------------------------------------------------------------------------------
DomParser::DomParser( data::InputStream* input ) :XmlParser(input), m_document(0), m_current(0)
{
}
// ---------------------------------------------------------------------------------------------------------------------
DomParser::~DomParser()
{
if( m_document != 0 ) {
delete m_document;
}
}
// ---------------------------------------------------------------------------------------------------------------------
DomDocumentNode* DomParser::getDocumentNode()
{
return (m_document);
}
// ---------------------------------------------------------------------------------------------------------------------
const DomDocumentNode* DomParser::getDocumentNode() const
{
return (m_document);
}
// ---------------------------------------------------------------------------------------------------------------------
void DomParser::xmlReset()
{
if( m_document != 0 ) {
delete m_document;
}
m_document = 0;
m_current = 0;
}
// ---------------------------------------------------------------------------------------------------------------------
void DomParser::xmlDocumentBegin()
{
m_document = new DomDocumentNode();
m_current = m_document;
}
// ---------------------------------------------------------------------------------------------------------------------
void DomParser::xmlDocumentEnd()
{
m_current = 0;
}
// ---------------------------------------------------------------------------------------------------------------------
void DomParser::xmlProcInstBegin( String instruction )
{
DomProcInstNode* node = new DomProcInstNode(m_current, instruction);
m_current = node;
}
// ---------------------------------------------------------------------------------------------------------------------
void DomParser::xmlProcInstAttribute( String name, String value )
{
DomAttributeNode* node = new DomAttributeNode(m_current, name, value);
}
// ---------------------------------------------------------------------------------------------------------------------
void DomParser::xmlProcInstEnd( String instruction )
{
m_current = m_current->getParent();
}
// ---------------------------------------------------------------------------------------------------------------------
void DomParser::xmlElementBegin( String element )
{
if( m_current->getNodeType() == DomNode::ELEMENT ) {
Array<DomNode*> nodes = m_current->getSubNodes();
if( nodes.getSize() > 0 && nodes[nodes.getSize()-1]->getNodeType() == DomNode::ELEMENT ) {
xmlElementText(String::null);
}
}
DomElementNode* node = new DomElementNode(m_current, element);
m_current = node;
}
// ---------------------------------------------------------------------------------------------------------------------
void DomParser::xmlElementAttribute( String name, String value )
{
DomAttributeNode* node = new DomAttributeNode(m_current, name, value);
}
// ---------------------------------------------------------------------------------------------------------------------
void DomParser::xmlElementText( String data )
{
DomTextNode* node = new DomTextNode(m_current, data);
}
// ---------------------------------------------------------------------------------------------------------------------
void DomParser::xmlElementCData( String data )
{
DomCDataNode* node = new DomCDataNode(m_current, data);
}
// ---------------------------------------------------------------------------------------------------------------------
void DomParser::xmlElementEnd( String element )
{
if( m_current->getNodeType() == DomNode::ELEMENT ) {
Array<DomNode*> nodes = m_current->getSubNodes();
if( nodes.getSize() > 0 && nodes[nodes.getSize()-1]->getNodeType() == DomNode::ELEMENT ) {
xmlElementText(String::null);
}
}
m_current = m_current->getParent();
}
// ---------------------------------------------------------------------------------------------------------------------
void DomParser::xmlComment( String comment )
{
DomCommentNode* node = new DomCommentNode(m_current, comment);
}
}}} // namespaces
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -