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; writeMarkup("/"); closeStartTag(); }
void XMLWriter::startCDATA() { if (_inCDATA) throw XMLException("Cannot nest CDATA sections"); if (_unclosedStartTag) closeStartTag(); _inCDATA = true; writeMarkup(MARKUP_BEGIN_CDATA); }
void XMLWriter::characters(const XMLChar ch[], int start, int length) { if (length == 0) return; if (_unclosedStartTag) closeStartTag(); _contentWritten = _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::comment(const XMLChar ch[], int start, int length) { if (_unclosedStartTag) closeStartTag(); prettyPrint(); writeMarkup("<!--"); while (length-- > 0) writeXML(ch[start++]); writeMarkup("-->"); _contentWritten = false; }
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 txHTMLOutput::characters(const nsAString& aData, PRBool aDOE) { if (aDOE) { closeStartTag(MB_FALSE); printUTF8Chars(aData); return; } // Special-case script and style if (!mCurrentElements.isEmpty()) { txExpandedName* currentElement = (txExpandedName*)mCurrentElements.peek(); if (currentElement->mNamespaceID == kNameSpaceID_None && (currentElement->mLocalName == txHTMLAtoms::script || currentElement->mLocalName == txHTMLAtoms::style)) { closeStartTag(MB_FALSE); printUTF8Chars(aData); return; } } txXMLOutput::characters(aData, aDOE); }
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 txHTMLOutput::processingInstruction(const nsAString& aTarget, const nsAString& aData) { closeStartTag(MB_FALSE); if (mOutputFormat.mIndent == eTrue) { for (PRUint32 i = 0; i < mIndentLevel; i++) *mOut << ' '; } *mOut << PI_START; printUTF8Chars(aTarget); *mOut << SPACE; printUTF8Chars(aData); *mOut << R_ANGLE_BRACKET; if (mOutputFormat.mIndent == eTrue) *mOut << endl; }
void txHTMLOutput::endElement(const nsAString& aName, const PRInt32 aNsID) { const nsAString& localPart = XMLUtils::getLocalPart(aName); if ((aNsID == kNameSpaceID_None) && isShorthandElement(localPart) && mStartTagOpen) { MBool newLine = (mOutputFormat.mIndent == eTrue) && mAfterEndTag; closeStartTag(MB_FALSE); if (newLine) *mOut << endl; if (mOutputFormat.mIndent == eTrue) mIndentLevel -= DEFAULT_INDENT; mAfterEndTag = MB_TRUE; } else { txXMLOutput::endElement(aName, aNsID); } delete (txExpandedName*)mCurrentElements.pop(); }
void XMLWriter::rawCharacters(const XMLString& str) { if (_unclosedStartTag) closeStartTag(); _contentWritten = _contentWritten || !str.empty(); writeXML(str); }