aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs/poco/XML/src/DOMWriter.cpp
diff options
context:
space:
mode:
authorDevtools Arcadia <arcadia-devtools@yandex-team.ru>2022-02-07 18:08:42 +0300
committerDevtools Arcadia <arcadia-devtools@mous.vla.yp-c.yandex.net>2022-02-07 18:08:42 +0300
commit1110808a9d39d4b808aef724c861a2e1a38d2a69 (patch)
treee26c9fed0de5d9873cce7e00bc214573dc2195b7 /contrib/libs/poco/XML/src/DOMWriter.cpp
downloadydb-1110808a9d39d4b808aef724c861a2e1a38d2a69.tar.gz
intermediate changes
ref:cde9a383711a11544ce7e107a78147fb96cc4029
Diffstat (limited to 'contrib/libs/poco/XML/src/DOMWriter.cpp')
-rw-r--r--contrib/libs/poco/XML/src/DOMWriter.cpp102
1 files changed, 102 insertions, 0 deletions
diff --git a/contrib/libs/poco/XML/src/DOMWriter.cpp b/contrib/libs/poco/XML/src/DOMWriter.cpp
new file mode 100644
index 0000000000..8a087643e8
--- /dev/null
+++ b/contrib/libs/poco/XML/src/DOMWriter.cpp
@@ -0,0 +1,102 @@
+//
+// DOMWriter.cpp
+//
+// Library: XML
+// Package: DOM
+// Module: DOMWriter
+//
+// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+
+#include "Poco/DOM/DOMWriter.h"
+#include "Poco/XML/XMLWriter.h"
+#include "Poco/DOM/Document.h"
+#include "Poco/DOM/DocumentFragment.h"
+#include "Poco/DOM/DocumentType.h"
+#include "Poco/DOM/DOMException.h"
+#include "Poco/DOM/DOMSerializer.h"
+#include "Poco/SAX/LexicalHandler.h"
+#include "Poco/XML/XMLException.h"
+#include "Poco/Path.h"
+#include "Poco/FileStream.h"
+
+
+namespace Poco {
+namespace XML {
+
+
+DOMWriter::DOMWriter():
+ _pTextEncoding(0),
+ _options(0),
+ _indent("\t")
+{
+}
+
+
+DOMWriter::~DOMWriter()
+{
+}
+
+
+void DOMWriter::setEncoding(const std::string& encodingName, Poco::TextEncoding& textEncoding)
+{
+ _encodingName = encodingName;
+ _pTextEncoding = &textEncoding;
+}
+
+
+void DOMWriter::setOptions(int options)
+{
+ _options = options;
+}
+
+
+void DOMWriter::setNewLine(const std::string& newLine)
+{
+ _newLine = newLine;
+}
+
+
+void DOMWriter::setIndent(const std::string& indent)
+{
+ _indent = indent;
+}
+
+
+void DOMWriter::writeNode(XMLByteOutputStream& ostr, const Node* pNode)
+{
+ poco_check_ptr (pNode);
+
+ bool isFragment = pNode->nodeType() != Node::DOCUMENT_NODE;
+
+ XMLWriter writer(ostr, _options, _encodingName, _pTextEncoding);
+ writer.setNewLine(_newLine);
+ writer.setIndent(_indent);
+
+ DOMSerializer serializer;
+ serializer.setContentHandler(&writer);
+ serializer.setDTDHandler(&writer);
+ serializer.setProperty(XMLReader::PROPERTY_LEXICAL_HANDLER, static_cast<LexicalHandler*>(&writer));
+ if (isFragment) writer.startFragment();
+ serializer.serialize(pNode);
+ if (isFragment) writer.endFragment();
+}
+
+
+void DOMWriter::writeNode(const std::string& systemId, const Node* pNode)
+{
+ Poco::FileOutputStream ostr(systemId);
+ if (ostr.good())
+ writeNode(ostr, pNode);
+ else
+ throw Poco::CreateFileException(systemId);
+}
+
+
+} } // namespace Poco::XML
+