Example #1
0
File: Reader.cpp Project: LicoC/XML
// read text content: assumes element with text only - no child elements.
bool Reader::readStringElement(const char *strElement, std::wstring &strValue)
{
	if ( readStartElement(strElement) )
	{
		readPCData(strValue);
		return readEndElement(false, strElement);
	}
	return false;
}
bool BaseStateAbstract::genCloseElement()
{
    bool ok = false;
    if (flags & GuiConst::STATE_SAVE_REQUEST) {
        ok = writeCloseElement();
    } else {
        ok = readEndElement();
    }

    return ok;
}
bool BaseStateAbstract::readEndElement(QString expected)
{
    if (readEndElement()) {
        if (reader->name() == expected)
            return true;
        else
            logNotAdequate("readEndElement:String",expected );
    } else {
        logStatus();
    }
    return false;
}
Example #4
0
File: Reader.cpp Project: LicoC/XML
// conclude self-closing element OR consume closing element.
bool Reader::readEndElement(bool bSkip)
{
	bool bOK = false;
	if (_stack.size() > 0)
	{
		bool bChildren = _stack.back().Children;
		skipspace(!bChildren);
		if (bChildren)
		{
			//bool bSkip = false;
			std::string strTail;
			strTail.reserve(_stack.back().Element.size() + 3);
			strTail = "</";
			strTail += _stack.back().Element;
			strTail += ">";
			do
			{
				bOK = _parser.parseMatch(strTail.c_str());
				if (!bOK && bSkip)
				{
					if ( readStartElement() )
					{
						_stack.back().Skipped++;
						_iSkipped++;
						readEndElement(bSkip); // recursive
					}
					else break;
				}
				else break;
			}
			while (!bOK);
		}
		else
			bOK = _parser.parseMatch("/>");
		if (bOK)
			_stack.pop_back();
	}
	return bOK;
}
Example #5
0
File: Reader.cpp Project: LicoC/XML
// conclude named self-closing element OR consume named closing element.
// return false if the top of the element stack does not match our expected element.
bool Reader::readEndElement(bool bSkip, const char *element)
{
	return _stack.size() && 
		_stack.back().Element.compare(element) == 0 &&
		readEndElement(bSkip);
}