diff options
author | Dan Sinclair <dsinclair@chromium.org> | 2018-04-12 13:41:09 +0000 |
---|---|---|
committer | Chromium commit bot <commit-bot@chromium.org> | 2018-04-12 13:41:09 +0000 |
commit | e7d5c7f48ead8f5554105da9637fd9de1c093d67 (patch) | |
tree | d2d680785cd6c64799530b650b61b81253a7a095 /xfa/fxfa/parser/cxfa_document_parser.cpp | |
parent | 62110c9ce5e0d74319e25f0f41fd241f4aeeac42 (diff) | |
download | pdfium-e7d5c7f48ead8f5554105da9637fd9de1c093d67.tar.xz |
Remove CFX_XMLDoc and call the parser directly
This CL removes the CFX_XMLDoc and calls the CFX_XMLParser directly from
CXFA_DocumentParser.
Change-Id: I4d715cca90cd15b5e1d79827e0bb2781e873e371
Reviewed-on: https://pdfium-review.googlesource.com/30251
Reviewed-by: Henrique Nakashima <hnakashima@chromium.org>
Commit-Queue: dsinclair <dsinclair@chromium.org>
Diffstat (limited to 'xfa/fxfa/parser/cxfa_document_parser.cpp')
-rw-r--r-- | xfa/fxfa/parser/cxfa_document_parser.cpp | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/xfa/fxfa/parser/cxfa_document_parser.cpp b/xfa/fxfa/parser/cxfa_document_parser.cpp index 707dfc11d5..c2cc1deb88 100644 --- a/xfa/fxfa/parser/cxfa_document_parser.cpp +++ b/xfa/fxfa/parser/cxfa_document_parser.cpp @@ -14,7 +14,6 @@ #include "core/fxcrt/fx_codepage.h" #include "core/fxcrt/fx_extension.h" #include "core/fxcrt/xml/cfx_xmlchardata.h" -#include "core/fxcrt/xml/cfx_xmldoc.h" #include "core/fxcrt/xml/cfx_xmlelement.h" #include "core/fxcrt/xml/cfx_xmlinstruction.h" #include "core/fxcrt/xml/cfx_xmlnode.h" @@ -345,11 +344,10 @@ bool CXFA_DocumentParser::Parse(const RetainPtr<IFX_SeekableStream>& pStream, pStreamProxy->SetCodePage(FX_CODEPAGE_UTF8); } - CFX_XMLDoc doc; - if (!doc.Load(pStreamProxy)) + m_pNodeTree = LoadXML(pStreamProxy); + if (!m_pNodeTree) return false; - m_pNodeTree = doc.GetTree(); m_pRootNode = ParseAsXDPPacket(GetDocumentNode(m_pNodeTree.get()), ePacketID); return !!m_pRootNode; } @@ -357,13 +355,21 @@ bool CXFA_DocumentParser::Parse(const RetainPtr<IFX_SeekableStream>& pStream, CFX_XMLNode* CXFA_DocumentParser::ParseXMLData(const ByteString& wsXML) { auto pStream = pdfium::MakeRetain<CFX_SeekableStreamProxy>( const_cast<uint8_t*>(wsXML.raw_str()), wsXML.GetLength()); - CFX_XMLDoc doc; - if (doc.Load(pStream)) - m_pNodeTree = doc.GetTree(); - + m_pNodeTree = LoadXML(pStream); return m_pNodeTree ? GetDocumentNode(m_pNodeTree.get()) : nullptr; } +std::unique_ptr<CFX_XMLNode> CXFA_DocumentParser::LoadXML( + const RetainPtr<CFX_SeekableStreamProxy>& pStream) { + ASSERT(pStream); + + auto root = pdfium::MakeUnique<CFX_XMLNode>(); + root->AppendChild(new CFX_XMLInstruction(L"xml")); + + CFX_XMLParser parser(root.get(), pStream); + return parser.Parse() ? std::move(root) : nullptr; +} + void CXFA_DocumentParser::ConstructXFANode(CXFA_Node* pXFANode, CFX_XMLNode* pXMLNode) { XFA_PacketType ePacketID = pXFANode->GetPacketType(); |