1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- // Copyright 2019 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #ifndef THIRD_PARTY_LIBXML_CHROMIUM_XML_WRITER_H_
- #define THIRD_PARTY_LIBXML_CHROMIUM_XML_WRITER_H_
- #include <string>
- extern "C" {
- struct _xmlBuffer;
- struct _xmlTextWriter;
- }
- // XmlWriter is a wrapper class around libxml's xmlWriter,
- // providing a simplified C++ API.
- // StartWriting must be called before other methods, and StopWriting
- // must be called before GetWrittenString() will return results.
- class XmlWriter {
- public:
- XmlWriter();
- ~XmlWriter();
- // Allocates the xmlTextWriter and an xmlBuffer and starts an XML document.
- // This must be called before any other functions. By default, indenting is
- // set to true.
- void StartWriting();
- // Ends the XML document and frees the xmlTextWriter.
- // This must be called before GetWrittenString() is called.
- void StopWriting();
- // Wrappers around libxml functions -----------------------------------------
- // All following elements will be indented to match their depth.
- void StartIndenting();
- // All follow elements will not be indented.
- void StopIndenting();
- // Start an element with the given name. All future elements added will be
- // children of this element, until it is ended. Returns false on error.
- bool StartElement(const std::string& element_name);
- // Ends the current open element. Returns false on error.
- bool EndElement();
- // Appends to the content of the current open element.
- bool AppendElementContent(const std::string& content);
- // Adds an attribute to the current open element. Returns false on error.
- bool AddAttribute(const std::string& attribute_name,
- const std::string& attribute_value);
- // Adds a new element with name |element_name| and content |content|
- // to the buffer. Example: <|element_name|>|content|</|element_name|>
- // Returns false on errors.
- bool WriteElement(const std::string& element_name,
- const std::string& content);
- // Helper functions not provided by xmlTextWriter ---------------------------
- // Returns the string that has been written to the buffer.
- std::string GetWrittenString();
- private:
- // The underlying libxml xmlTextWriter.
- _xmlTextWriter* writer_;
- // Stores the output.
- _xmlBuffer* buffer_;
- };
- #endif // THIRD_PARTY_LIBXML_CHROMIUM_XML_WRITER_H_
|