1 // Copyright 2017 PDFium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6 7 #ifndef CORE_FXCRT_XML_CFX_XMLDOC_H_ 8 #define CORE_FXCRT_XML_CFX_XMLDOC_H_ 9 10 #include <memory> 11 12 #include "core/fxcrt/cfx_seekablestreamproxy.h" 13 #include "core/fxcrt/retain_ptr.h" 14 #include "core/fxcrt/xml/cfx_xmlnode.h" 15 #include "core/fxcrt/xml/cfx_xmlparser.h" 16 17 class CFX_XMLDoc { 18 public: 19 CFX_XMLDoc(); 20 ~CFX_XMLDoc(); 21 22 bool LoadXML(std::unique_ptr<CFX_XMLParser> pXMLParser); 23 int32_t DoLoad(); 24 void CloseXML(); 25 GetRoot()26 CFX_XMLNode* GetRoot() const { return m_pRoot.get(); } 27 void SaveXMLNode(const RetainPtr<CFX_SeekableStreamProxy>& pXMLStream, 28 CFX_XMLNode* pNode); 29 30 private: 31 int32_t m_iStatus; 32 std::unique_ptr<CFX_XMLNode> m_pRoot; 33 std::unique_ptr<CFX_XMLParser> m_pXMLParser; 34 RetainPtr<CFX_SeekableStreamProxy> m_pStream; 35 }; 36 37 #endif // CORE_FXCRT_XML_CFX_XMLDOC_H_ 38