Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(314)

Side by Side Diff: xfa/fxfa/parser/xfa_parser_imp.cpp

Issue 1836353002: Remove IFDE_XML* classes. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « xfa/fxfa/parser/xfa_parser_imp.h ('k') | xfa/fxfa/parser/xfa_utils.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 PDFium Authors. All rights reserved. 1 // Copyright 2014 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6 6
7 #include "xfa/fxfa/parser/xfa_parser_imp.h" 7 #include "xfa/fxfa/parser/xfa_parser_imp.h"
8 8
9 #include "xfa/fde/xml/fde_xml_imp.h"
9 #include "xfa/fgas/crt/fgas_codepage.h" 10 #include "xfa/fgas/crt/fgas_codepage.h"
10 #include "xfa/fxfa/fm2js/xfa_fm2jsapi.h" 11 #include "xfa/fxfa/fm2js/xfa_fm2jsapi.h"
11 #include "xfa/fxfa/parser/xfa_basic_imp.h" 12 #include "xfa/fxfa/parser/xfa_basic_imp.h"
12 #include "xfa/fxfa/parser/xfa_docdata.h" 13 #include "xfa/fxfa/parser/xfa_docdata.h"
13 #include "xfa/fxfa/parser/xfa_doclayout.h" 14 #include "xfa/fxfa/parser/xfa_doclayout.h"
14 #include "xfa/fxfa/parser/xfa_document.h" 15 #include "xfa/fxfa/parser/xfa_document.h"
15 #include "xfa/fxfa/parser/xfa_localemgr.h" 16 #include "xfa/fxfa/parser/xfa_localemgr.h"
16 #include "xfa/fxfa/parser/xfa_object.h" 17 #include "xfa/fxfa/parser/xfa_object.h"
17 #include "xfa/fxfa/parser/xfa_parser.h" 18 #include "xfa/fxfa/parser/xfa_parser.h"
18 #include "xfa/fxfa/parser/xfa_script.h" 19 #include "xfa/fxfa/parser/xfa_script.h"
(...skipping 12 matching lines...) Expand all
31 m_pFactory(pFactory), 32 m_pFactory(pFactory),
32 m_pRootNode(nullptr), 33 m_pRootNode(nullptr),
33 m_ePacketID(XFA_XDPPACKET_UNKNOWN), 34 m_ePacketID(XFA_XDPPACKET_UNKNOWN),
34 m_bDocumentParser(bDocumentParser) {} 35 m_bDocumentParser(bDocumentParser) {}
35 CXFA_SimpleParser::~CXFA_SimpleParser() { 36 CXFA_SimpleParser::~CXFA_SimpleParser() {
36 CloseParser(); 37 CloseParser();
37 } 38 }
38 void CXFA_SimpleParser::SetFactory(IXFA_ObjFactory* pFactory) { 39 void CXFA_SimpleParser::SetFactory(IXFA_ObjFactory* pFactory) {
39 m_pFactory = pFactory; 40 m_pFactory = pFactory;
40 } 41 }
41 static IFDE_XMLNode* XFA_FDEExtension_GetDocumentNode( 42 static CFDE_XMLNode* XFA_FDEExtension_GetDocumentNode(
42 IFDE_XMLDoc* pXMLDoc, 43 CFDE_XMLDoc* pXMLDoc,
43 FX_BOOL bVerifyWellFormness = FALSE) { 44 FX_BOOL bVerifyWellFormness = FALSE) {
44 if (!pXMLDoc) { 45 if (!pXMLDoc) {
45 return NULL; 46 return NULL;
46 } 47 }
47 IFDE_XMLNode* pXMLFakeRoot = pXMLDoc->GetRoot(); 48 CFDE_XMLNode* pXMLFakeRoot = pXMLDoc->GetRoot();
48 for (IFDE_XMLNode* pXMLNode = 49 for (CFDE_XMLNode* pXMLNode =
49 pXMLFakeRoot->GetNodeItem(IFDE_XMLNode::FirstChild); 50 pXMLFakeRoot->GetNodeItem(CFDE_XMLNode::FirstChild);
50 pXMLNode; pXMLNode = pXMLNode->GetNodeItem(IFDE_XMLNode::NextSibling)) { 51 pXMLNode; pXMLNode = pXMLNode->GetNodeItem(CFDE_XMLNode::NextSibling)) {
51 if (pXMLNode->GetType() == FDE_XMLNODE_Element) { 52 if (pXMLNode->GetType() == FDE_XMLNODE_Element) {
52 if (bVerifyWellFormness) { 53 if (bVerifyWellFormness) {
53 for (IFDE_XMLNode* pNextNode = 54 for (CFDE_XMLNode* pNextNode =
54 pXMLNode->GetNodeItem(IFDE_XMLNode::NextSibling); 55 pXMLNode->GetNodeItem(CFDE_XMLNode::NextSibling);
55 pNextNode; 56 pNextNode;
56 pNextNode = pNextNode->GetNodeItem(IFDE_XMLNode::NextSibling)) { 57 pNextNode = pNextNode->GetNodeItem(CFDE_XMLNode::NextSibling)) {
57 if (pNextNode->GetType() == FDE_XMLNODE_Element) { 58 if (pNextNode->GetType() == FDE_XMLNODE_Element) {
58 return FALSE; 59 return FALSE;
59 } 60 }
60 } 61 }
61 } 62 }
62 return pXMLNode; 63 return pXMLNode;
63 } 64 }
64 } 65 }
65 return NULL; 66 return NULL;
66 } 67 }
67 int32_t CXFA_SimpleParser::StartParse(IFX_FileRead* pStream, 68 int32_t CXFA_SimpleParser::StartParse(IFX_FileRead* pStream,
68 XFA_XDPPACKET ePacketID) { 69 XFA_XDPPACKET ePacketID) {
69 CloseParser(); 70 CloseParser();
70 m_pFileRead = pStream; 71 m_pFileRead = pStream;
71 m_pStream = IFX_Stream::CreateStream( 72 m_pStream = IFX_Stream::CreateStream(
72 pStream, FX_STREAMACCESS_Read | FX_STREAMACCESS_Text); 73 pStream, FX_STREAMACCESS_Read | FX_STREAMACCESS_Text);
73 if (m_pStream == NULL) { 74 if (m_pStream == NULL) {
74 return XFA_PARSESTATUS_StreamErr; 75 return XFA_PARSESTATUS_StreamErr;
75 } 76 }
76 uint16_t wCodePage = m_pStream->GetCodePage(); 77 uint16_t wCodePage = m_pStream->GetCodePage();
77 if (wCodePage != FX_CODEPAGE_UTF16LE && wCodePage != FX_CODEPAGE_UTF16BE && 78 if (wCodePage != FX_CODEPAGE_UTF16LE && wCodePage != FX_CODEPAGE_UTF16BE &&
78 wCodePage != FX_CODEPAGE_UTF8) { 79 wCodePage != FX_CODEPAGE_UTF8) {
79 m_pStream->SetCodePage(FX_CODEPAGE_UTF8); 80 m_pStream->SetCodePage(FX_CODEPAGE_UTF8);
80 } 81 }
81 m_pXMLDoc = IFDE_XMLDoc::Create(); 82 m_pXMLDoc = new CFDE_XMLDoc;
82 if (m_pXMLDoc == NULL) {
83 return XFA_PARSESTATUS_StatusErr;
84 }
85 m_pXMLParser = new CXFA_XMLParser(m_pXMLDoc->GetRoot(), m_pStream); 83 m_pXMLParser = new CXFA_XMLParser(m_pXMLDoc->GetRoot(), m_pStream);
86 if (m_pXMLParser == NULL) { 84
Tom Sepez 2016/03/29 23:19:37 nit: no blank line here.
dsinclair 2016/03/29 23:43:12 Done.
87 return XFA_PARSESTATUS_StatusErr;
88 }
89 if (!m_pXMLDoc->LoadXML(m_pXMLParser)) { 85 if (!m_pXMLDoc->LoadXML(m_pXMLParser)) {
90 return XFA_PARSESTATUS_StatusErr; 86 return XFA_PARSESTATUS_StatusErr;
91 } 87 }
92 m_ePacketID = ePacketID; 88 m_ePacketID = ePacketID;
93 return XFA_PARSESTATUS_Ready; 89 return XFA_PARSESTATUS_Ready;
94 } 90 }
95 int32_t CXFA_SimpleParser::DoParse(IFX_Pause* pPause) { 91 int32_t CXFA_SimpleParser::DoParse(IFX_Pause* pPause) {
96 if (m_pXMLDoc == NULL || m_ePacketID == XFA_XDPPACKET_UNKNOWN) { 92 if (m_pXMLDoc == NULL || m_ePacketID == XFA_XDPPACKET_UNKNOWN) {
97 return XFA_PARSESTATUS_StatusErr; 93 return XFA_PARSESTATUS_StatusErr;
98 } 94 }
(...skipping 10 matching lines...) Expand all
109 if (m_pStream) { 105 if (m_pStream) {
110 m_pStream->Release(); 106 m_pStream->Release();
111 m_pStream = NULL; 107 m_pStream = NULL;
112 } 108 }
113 if (!m_pRootNode) { 109 if (!m_pRootNode) {
114 return XFA_PARSESTATUS_StatusErr; 110 return XFA_PARSESTATUS_StatusErr;
115 } 111 }
116 return XFA_PARSESTATUS_Done; 112 return XFA_PARSESTATUS_Done;
117 } 113 }
118 int32_t CXFA_SimpleParser::ParseXMLData(const CFX_WideString& wsXML, 114 int32_t CXFA_SimpleParser::ParseXMLData(const CFX_WideString& wsXML,
119 IFDE_XMLNode*& pXMLNode, 115 CFDE_XMLNode*& pXMLNode,
120 IFX_Pause* pPause) { 116 IFX_Pause* pPause) {
121 CloseParser(); 117 CloseParser();
122 pXMLNode = NULL; 118 pXMLNode = NULL;
123 IFX_Stream* pStream = XFA_CreateWideTextRead(wsXML); 119 IFX_Stream* pStream = XFA_CreateWideTextRead(wsXML);
124 if (!pStream) { 120 if (!pStream) {
125 return XFA_PARSESTATUS_StreamErr; 121 return XFA_PARSESTATUS_StreamErr;
126 } 122 }
127 m_pStream = pStream; 123 m_pStream = pStream;
128 m_pXMLDoc = IFDE_XMLDoc::Create(); 124 m_pXMLDoc = new CFDE_XMLDoc;
129 if (m_pXMLDoc == NULL) {
130 return XFA_PARSESTATUS_StatusErr;
131 }
132 CXFA_XMLParser* pParser = new CXFA_XMLParser(m_pXMLDoc->GetRoot(), m_pStream); 125 CXFA_XMLParser* pParser = new CXFA_XMLParser(m_pXMLDoc->GetRoot(), m_pStream);
133 if (pParser == NULL) {
134 return XFA_PARSESTATUS_StatusErr;
135 }
136 126
Tom Sepez 2016/03/29 23:19:37 nit: no blank line here.
dsinclair 2016/03/29 23:43:12 Done.
137 pParser->m_dwCheckStatus = 0x03; 127 pParser->m_dwCheckStatus = 0x03;
138 if (!m_pXMLDoc->LoadXML(pParser)) { 128 if (!m_pXMLDoc->LoadXML(pParser)) {
139 return XFA_PARSESTATUS_StatusErr; 129 return XFA_PARSESTATUS_StatusErr;
140 } 130 }
141 int32_t iRet = m_pXMLDoc->DoLoad(pPause); 131 int32_t iRet = m_pXMLDoc->DoLoad(pPause);
142 if (iRet < 0 || iRet >= 100) { 132 if (iRet < 0 || iRet >= 100) {
143 m_pXMLDoc->CloseXML(); 133 m_pXMLDoc->CloseXML();
144 } 134 }
145 if (iRet < 0) { 135 if (iRet < 0) {
146 return XFA_PARSESTATUS_SyntaxErr; 136 return XFA_PARSESTATUS_SyntaxErr;
147 } 137 }
148 if (iRet < 100) { 138 if (iRet < 100) {
149 return iRet / 2; 139 return iRet / 2;
150 } 140 }
151 if (m_pStream) { 141 if (m_pStream) {
152 m_pStream->Release(); 142 m_pStream->Release();
153 m_pStream = NULL; 143 m_pStream = NULL;
154 } 144 }
155 pXMLNode = XFA_FDEExtension_GetDocumentNode(m_pXMLDoc); 145 pXMLNode = XFA_FDEExtension_GetDocumentNode(m_pXMLDoc);
156 return XFA_PARSESTATUS_Done; 146 return XFA_PARSESTATUS_Done;
157 } 147 }
158 148
159 void CXFA_SimpleParser::ConstructXFANode(CXFA_Node* pXFANode, 149 void CXFA_SimpleParser::ConstructXFANode(CXFA_Node* pXFANode,
160 IFDE_XMLNode* pXMLNode) { 150 CFDE_XMLNode* pXMLNode) {
161 XFA_XDPPACKET ePacketID = (XFA_XDPPACKET)pXFANode->GetPacketID(); 151 XFA_XDPPACKET ePacketID = (XFA_XDPPACKET)pXFANode->GetPacketID();
162 if (ePacketID == XFA_XDPPACKET_Datasets) { 152 if (ePacketID == XFA_XDPPACKET_Datasets) {
163 if (pXFANode->GetClassID() == XFA_ELEMENT_DataValue) { 153 if (pXFANode->GetClassID() == XFA_ELEMENT_DataValue) {
164 for (IFDE_XMLNode* pXMLChild = 154 for (CFDE_XMLNode* pXMLChild =
165 pXMLNode->GetNodeItem(IFDE_XMLNode::FirstChild); 155 pXMLNode->GetNodeItem(CFDE_XMLNode::FirstChild);
166 pXMLChild; 156 pXMLChild;
167 pXMLChild = pXMLChild->GetNodeItem(IFDE_XMLNode::NextSibling)) { 157 pXMLChild = pXMLChild->GetNodeItem(CFDE_XMLNode::NextSibling)) {
168 FDE_XMLNODETYPE eNodeType = pXMLChild->GetType(); 158 FDE_XMLNODETYPE eNodeType = pXMLChild->GetType();
169 if (eNodeType == FDE_XMLNODE_Instruction) 159 if (eNodeType == FDE_XMLNODE_Instruction)
170 continue; 160 continue;
171 161
172 if (eNodeType == FDE_XMLNODE_Element) { 162 if (eNodeType == FDE_XMLNODE_Element) {
173 CXFA_Node* pXFAChild = m_pFactory->CreateNode(XFA_XDPPACKET_Datasets, 163 CXFA_Node* pXFAChild = m_pFactory->CreateNode(XFA_XDPPACKET_Datasets,
174 XFA_ELEMENT_DataValue); 164 XFA_ELEMENT_DataValue);
175 if (!pXFAChild) 165 if (!pXFAChild)
176 return; 166 return;
177 167
178 CFX_WideString wsNodeStr; 168 CFX_WideString wsNodeStr;
179 ((IFDE_XMLElement*)pXMLChild)->GetLocalTagName(wsNodeStr); 169 CFDE_XMLElement* child = static_cast<CFDE_XMLElement*>(pXMLChild);
170 child->GetLocalTagName(wsNodeStr);
180 pXFAChild->SetCData(XFA_ATTRIBUTE_Name, wsNodeStr); 171 pXFAChild->SetCData(XFA_ATTRIBUTE_Name, wsNodeStr);
181 CFX_WideString wsChildValue; 172 CFX_WideString wsChildValue;
182 XFA_GetPlainTextFromRichText((IFDE_XMLElement*)pXMLChild, 173 XFA_GetPlainTextFromRichText(child, wsChildValue);
183 wsChildValue);
184 if (!wsChildValue.IsEmpty()) 174 if (!wsChildValue.IsEmpty())
185 pXFAChild->SetCData(XFA_ATTRIBUTE_Value, wsChildValue); 175 pXFAChild->SetCData(XFA_ATTRIBUTE_Value, wsChildValue);
186 176
187 pXFANode->InsertChild(pXFAChild); 177 pXFANode->InsertChild(pXFAChild);
188 pXFAChild->SetXMLMappingNode(pXMLChild); 178 pXFAChild->SetXMLMappingNode(pXMLChild);
189 pXFAChild->SetFlag(XFA_NODEFLAG_Initialized, TRUE, FALSE); 179 pXFAChild->SetFlag(XFA_NODEFLAG_Initialized, TRUE, FALSE);
190 break; 180 break;
191 } 181 }
192 } 182 }
193 m_pRootNode = pXFANode; 183 m_pRootNode = pXFANode;
194 } else { 184 } else {
195 m_pRootNode = DataLoader(pXFANode, pXMLNode, TRUE); 185 m_pRootNode = DataLoader(pXFANode, pXMLNode, TRUE);
196 } 186 }
197 } else if (pXFANode->GetObjectType() == XFA_OBJECTTYPE_ContentNode) { 187 } else if (pXFANode->GetObjectType() == XFA_OBJECTTYPE_ContentNode) {
198 ParseContentNode(pXFANode, pXMLNode, ePacketID); 188 ParseContentNode(pXFANode, pXMLNode, ePacketID);
199 m_pRootNode = pXFANode; 189 m_pRootNode = pXFANode;
200 } else { 190 } else {
201 m_pRootNode = NormalLoader(pXFANode, pXMLNode, ePacketID); 191 m_pRootNode = NormalLoader(pXFANode, pXMLNode, ePacketID);
202 } 192 }
203 } 193 }
204 194
205 FX_BOOL XFA_FDEExtension_ResolveNamespaceQualifier( 195 FX_BOOL XFA_FDEExtension_ResolveNamespaceQualifier(
206 IFDE_XMLElement* pNode, 196 CFDE_XMLElement* pNode,
207 const CFX_WideStringC& wsQualifier, 197 const CFX_WideStringC& wsQualifier,
208 CFX_WideString& wsNamespaceURI) { 198 CFX_WideString& wsNamespaceURI) {
209 if (!pNode) { 199 if (!pNode) {
210 return FALSE; 200 return FALSE;
211 } 201 }
212 IFDE_XMLNode* pFakeRoot = pNode->GetNodeItem(IFDE_XMLNode::Root); 202 CFDE_XMLNode* pFakeRoot = pNode->GetNodeItem(CFDE_XMLNode::Root);
213 CFX_WideString wsNSAttribute; 203 CFX_WideString wsNSAttribute;
214 FX_BOOL bRet = FALSE; 204 FX_BOOL bRet = FALSE;
215 if (wsQualifier.IsEmpty()) { 205 if (wsQualifier.IsEmpty()) {
216 wsNSAttribute = FX_WSTRC(L"xmlns"); 206 wsNSAttribute = FX_WSTRC(L"xmlns");
217 bRet = TRUE; 207 bRet = TRUE;
218 } else { 208 } else {
219 wsNSAttribute = FX_WSTRC(L"xmlns:") + wsQualifier; 209 wsNSAttribute = FX_WSTRC(L"xmlns:") + wsQualifier;
220 } 210 }
221 for (; pNode != pFakeRoot; 211 for (; pNode != pFakeRoot; pNode = static_cast<CFDE_XMLElement*>(
222 pNode = (IFDE_XMLElement*)pNode->GetNodeItem(IFDE_XMLNode::Parent)) { 212 pNode->GetNodeItem(CFDE_XMLNode::Parent))) {
223 if (pNode->GetType() != FDE_XMLNODE_Element) { 213 if (pNode->GetType() != FDE_XMLNODE_Element) {
224 continue; 214 continue;
225 } 215 }
226 if (pNode->HasAttribute(wsNSAttribute)) { 216 if (pNode->HasAttribute(wsNSAttribute)) {
227 pNode->GetString(wsNSAttribute, wsNamespaceURI); 217 pNode->GetString(wsNSAttribute, wsNamespaceURI);
228 return TRUE; 218 return TRUE;
229 } 219 }
230 } 220 }
231 wsNamespaceURI.Empty(); 221 wsNamespaceURI.Empty();
232 return bRet; 222 return bRet;
233 } 223 }
234 static inline void XFA_FDEExtension_GetElementTagNamespaceURI( 224 static inline void XFA_FDEExtension_GetElementTagNamespaceURI(
235 IFDE_XMLElement* pElement, 225 CFDE_XMLElement* pElement,
236 CFX_WideString& wsNamespaceURI) { 226 CFX_WideString& wsNamespaceURI) {
237 CFX_WideString wsNodeStr; 227 CFX_WideString wsNodeStr;
238 pElement->GetNamespacePrefix(wsNodeStr); 228 pElement->GetNamespacePrefix(wsNodeStr);
239 if (!XFA_FDEExtension_ResolveNamespaceQualifier(pElement, wsNodeStr, 229 if (!XFA_FDEExtension_ResolveNamespaceQualifier(pElement, wsNodeStr,
240 wsNamespaceURI)) { 230 wsNamespaceURI)) {
241 wsNamespaceURI.Empty(); 231 wsNamespaceURI.Empty();
242 } 232 }
243 } 233 }
244 static FX_BOOL XFA_FDEExtension_MatchNodeName( 234 static FX_BOOL XFA_FDEExtension_MatchNodeName(
245 IFDE_XMLNode* pNode, 235 CFDE_XMLNode* pNode,
246 const CFX_WideStringC& wsLocalTagName, 236 const CFX_WideStringC& wsLocalTagName,
247 const CFX_WideStringC& wsNamespaceURIPrefix, 237 const CFX_WideStringC& wsNamespaceURIPrefix,
248 uint32_t eMatchFlags = XFA_XDPPACKET_FLAGS_NOMATCH) { 238 uint32_t eMatchFlags = XFA_XDPPACKET_FLAGS_NOMATCH) {
249 if (!pNode || pNode->GetType() != FDE_XMLNODE_Element) { 239 if (!pNode || pNode->GetType() != FDE_XMLNODE_Element) {
250 return FALSE; 240 return FALSE;
251 } 241 }
252 IFDE_XMLElement* pElement = reinterpret_cast<IFDE_XMLElement*>(pNode); 242 CFDE_XMLElement* pElement = reinterpret_cast<CFDE_XMLElement*>(pNode);
253 CFX_WideString wsNodeStr; 243 CFX_WideString wsNodeStr;
254 pElement->GetLocalTagName(wsNodeStr); 244 pElement->GetLocalTagName(wsNodeStr);
255 if (wsNodeStr != wsLocalTagName) { 245 if (wsNodeStr != wsLocalTagName) {
256 return FALSE; 246 return FALSE;
257 } 247 }
258 XFA_FDEExtension_GetElementTagNamespaceURI(pElement, wsNodeStr); 248 XFA_FDEExtension_GetElementTagNamespaceURI(pElement, wsNodeStr);
259 if (eMatchFlags & XFA_XDPPACKET_FLAGS_NOMATCH) { 249 if (eMatchFlags & XFA_XDPPACKET_FLAGS_NOMATCH) {
260 return TRUE; 250 return TRUE;
261 } 251 }
262 if (eMatchFlags & XFA_XDPPACKET_FLAGS_PREFIXMATCH) { 252 if (eMatchFlags & XFA_XDPPACKET_FLAGS_PREFIXMATCH) {
263 return wsNodeStr.Left(wsNamespaceURIPrefix.GetLength()) == 253 return wsNodeStr.Left(wsNamespaceURIPrefix.GetLength()) ==
264 wsNamespaceURIPrefix; 254 wsNamespaceURIPrefix;
265 } 255 }
266 return wsNodeStr == wsNamespaceURIPrefix; 256 return wsNodeStr == wsNamespaceURIPrefix;
267 } 257 }
268 static FX_BOOL XFA_FDEExtension_GetAttributeLocalName( 258 static FX_BOOL XFA_FDEExtension_GetAttributeLocalName(
269 const CFX_WideStringC& wsAttributeName, 259 const CFX_WideStringC& wsAttributeName,
270 CFX_WideString& wsLocalAttrName) { 260 CFX_WideString& wsLocalAttrName) {
271 CFX_WideString wsAttrName(wsAttributeName); 261 CFX_WideString wsAttrName(wsAttributeName);
272 FX_STRSIZE iFind = wsAttrName.Find(L':', 0); 262 FX_STRSIZE iFind = wsAttrName.Find(L':', 0);
273 if (iFind < 0) { 263 if (iFind < 0) {
274 wsLocalAttrName = wsAttrName; 264 wsLocalAttrName = wsAttrName;
275 return FALSE; 265 return FALSE;
276 } else { 266 } else {
277 wsLocalAttrName = wsAttrName.Right(wsAttrName.GetLength() - iFind - 1); 267 wsLocalAttrName = wsAttrName.Right(wsAttrName.GetLength() - iFind - 1);
278 return TRUE; 268 return TRUE;
279 } 269 }
280 } 270 }
281 static FX_BOOL XFA_FDEExtension_ResolveAttribute( 271 static FX_BOOL XFA_FDEExtension_ResolveAttribute(
282 IFDE_XMLElement* pElement, 272 CFDE_XMLElement* pElement,
283 const CFX_WideStringC& wsAttributeName, 273 const CFX_WideStringC& wsAttributeName,
284 CFX_WideString& wsLocalAttrName, 274 CFX_WideString& wsLocalAttrName,
285 CFX_WideString& wsNamespaceURI) { 275 CFX_WideString& wsNamespaceURI) {
286 CFX_WideString wsAttrName(wsAttributeName); 276 CFX_WideString wsAttrName(wsAttributeName);
287 CFX_WideString wsNSPrefix; 277 CFX_WideString wsNSPrefix;
288 if (XFA_FDEExtension_GetAttributeLocalName(wsAttributeName, 278 if (XFA_FDEExtension_GetAttributeLocalName(wsAttributeName,
289 wsLocalAttrName)) { 279 wsLocalAttrName)) {
290 wsNSPrefix = wsAttrName.Left(wsAttributeName.GetLength() - 280 wsNSPrefix = wsAttrName.Left(wsAttributeName.GetLength() -
291 wsLocalAttrName.GetLength() - 1); 281 wsLocalAttrName.GetLength() - 1);
292 } 282 }
293 if (wsLocalAttrName == FX_WSTRC(L"xmlns") || 283 if (wsLocalAttrName == FX_WSTRC(L"xmlns") ||
294 wsNSPrefix == FX_WSTRC(L"xmlns") || wsNSPrefix == FX_WSTRC(L"xml")) { 284 wsNSPrefix == FX_WSTRC(L"xmlns") || wsNSPrefix == FX_WSTRC(L"xml")) {
295 return FALSE; 285 return FALSE;
296 } 286 }
297 if (!XFA_FDEExtension_ResolveNamespaceQualifier(pElement, wsNSPrefix, 287 if (!XFA_FDEExtension_ResolveNamespaceQualifier(pElement, wsNSPrefix,
298 wsNamespaceURI)) { 288 wsNamespaceURI)) {
299 wsNamespaceURI.Empty(); 289 wsNamespaceURI.Empty();
300 return FALSE; 290 return FALSE;
301 } 291 }
302 return TRUE; 292 return TRUE;
303 } 293 }
304 static FX_BOOL XFA_FDEExtension_FindAttributeWithNS( 294 static FX_BOOL XFA_FDEExtension_FindAttributeWithNS(
305 IFDE_XMLElement* pElement, 295 CFDE_XMLElement* pElement,
306 const CFX_WideStringC& wsLocalAttributeName, 296 const CFX_WideStringC& wsLocalAttributeName,
307 const CFX_WideStringC& wsNamespaceURIPrefix, 297 const CFX_WideStringC& wsNamespaceURIPrefix,
308 CFX_WideString& wsValue, 298 CFX_WideString& wsValue,
309 FX_BOOL bMatchNSAsPrefix = FALSE) { 299 FX_BOOL bMatchNSAsPrefix = FALSE) {
310 if (!pElement) { 300 if (!pElement) {
311 return FALSE; 301 return FALSE;
312 } 302 }
313 CFX_WideString wsAttrName; 303 CFX_WideString wsAttrName;
314 CFX_WideString wsAttrValue; 304 CFX_WideString wsAttrValue;
315 CFX_WideString wsAttrNS; 305 CFX_WideString wsAttrNS;
(...skipping 25 matching lines...) Expand all
341 } else { 331 } else {
342 if (wsAttrNS != wsNamespaceURIPrefix) { 332 if (wsAttrNS != wsNamespaceURIPrefix) {
343 continue; 333 continue;
344 } 334 }
345 } 335 }
346 wsValue = wsAttrValue; 336 wsValue = wsAttrValue;
347 return TRUE; 337 return TRUE;
348 } 338 }
349 return FALSE; 339 return FALSE;
350 } 340 }
351 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket(IFDE_XMLNode* pXMLDocumentNode, 341 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket(CFDE_XMLNode* pXMLDocumentNode,
352 XFA_XDPPACKET ePacketID) { 342 XFA_XDPPACKET ePacketID) {
353 switch (ePacketID) { 343 switch (ePacketID) {
354 case XFA_XDPPACKET_UNKNOWN: 344 case XFA_XDPPACKET_UNKNOWN:
355 return NULL; 345 return NULL;
356 case XFA_XDPPACKET_XDP: 346 case XFA_XDPPACKET_XDP:
357 return ParseAsXDPPacket_XDP(pXMLDocumentNode, ePacketID); 347 return ParseAsXDPPacket_XDP(pXMLDocumentNode, ePacketID);
358 case XFA_XDPPACKET_Config: 348 case XFA_XDPPACKET_Config:
359 return ParseAsXDPPacket_Config(pXMLDocumentNode, ePacketID); 349 return ParseAsXDPPacket_Config(pXMLDocumentNode, ePacketID);
360 case XFA_XDPPACKET_Template: 350 case XFA_XDPPACKET_Template:
361 case XFA_XDPPACKET_Form: 351 case XFA_XDPPACKET_Form:
362 return ParseAsXDPPacket_TemplateForm(pXMLDocumentNode, ePacketID); 352 return ParseAsXDPPacket_TemplateForm(pXMLDocumentNode, ePacketID);
363 case XFA_XDPPACKET_Datasets: 353 case XFA_XDPPACKET_Datasets:
364 return ParseAsXDPPacket_Data(pXMLDocumentNode, ePacketID); 354 return ParseAsXDPPacket_Data(pXMLDocumentNode, ePacketID);
365 case XFA_XDPPACKET_Xdc: 355 case XFA_XDPPACKET_Xdc:
366 return ParseAsXDPPacket_Xdc(pXMLDocumentNode, ePacketID); 356 return ParseAsXDPPacket_Xdc(pXMLDocumentNode, ePacketID);
367 case XFA_XDPPACKET_LocaleSet: 357 case XFA_XDPPACKET_LocaleSet:
368 case XFA_XDPPACKET_ConnectionSet: 358 case XFA_XDPPACKET_ConnectionSet:
369 case XFA_XDPPACKET_SourceSet: 359 case XFA_XDPPACKET_SourceSet:
370 return ParseAsXDPPacket_LocaleConnectionSourceSet(pXMLDocumentNode, 360 return ParseAsXDPPacket_LocaleConnectionSourceSet(pXMLDocumentNode,
371 ePacketID); 361 ePacketID);
372 default: 362 default:
373 return ParseAsXDPPacket_User(pXMLDocumentNode, ePacketID); 363 return ParseAsXDPPacket_User(pXMLDocumentNode, ePacketID);
374 } 364 }
375 return NULL; 365 return NULL;
376 } 366 }
377 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_XDP( 367 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_XDP(
378 IFDE_XMLNode* pXMLDocumentNode, 368 CFDE_XMLNode* pXMLDocumentNode,
379 XFA_XDPPACKET ePacketID) { 369 XFA_XDPPACKET ePacketID) {
380 if (!XFA_FDEExtension_MatchNodeName( 370 if (!XFA_FDEExtension_MatchNodeName(
381 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_XDP)->pName, 371 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_XDP)->pName,
382 XFA_GetPacketByIndex(XFA_PACKET_XDP)->pURI, 372 XFA_GetPacketByIndex(XFA_PACKET_XDP)->pURI,
383 XFA_GetPacketByIndex(XFA_PACKET_XDP)->eFlags)) { 373 XFA_GetPacketByIndex(XFA_PACKET_XDP)->eFlags)) {
384 return nullptr; 374 return nullptr;
385 } 375 }
386 CXFA_Node* pXFARootNode = 376 CXFA_Node* pXFARootNode =
387 m_pFactory->CreateNode(XFA_XDPPACKET_XDP, XFA_ELEMENT_Xfa); 377 m_pFactory->CreateNode(XFA_XDPPACKET_XDP, XFA_ELEMENT_Xfa);
388 if (!pXFARootNode) { 378 if (!pXFARootNode) {
389 return nullptr; 379 return nullptr;
390 } 380 }
391 m_pRootNode = pXFARootNode; 381 m_pRootNode = pXFARootNode;
392 pXFARootNode->SetCData(XFA_ATTRIBUTE_Name, FX_WSTRC(L"xfa")); 382 pXFARootNode->SetCData(XFA_ATTRIBUTE_Name, FX_WSTRC(L"xfa"));
393 { 383 {
394 IFDE_XMLElement* pElement = (IFDE_XMLElement*)pXMLDocumentNode; 384 CFDE_XMLElement* pElement = static_cast<CFDE_XMLElement*>(pXMLDocumentNode);
395 int32_t iAttributeCount = pElement->CountAttributes(); 385 int32_t iAttributeCount = pElement->CountAttributes();
396 for (int32_t i = 0; i < iAttributeCount; i++) { 386 for (int32_t i = 0; i < iAttributeCount; i++) {
397 CFX_WideString wsAttriName, wsAttriValue; 387 CFX_WideString wsAttriName, wsAttriValue;
398 pElement->GetAttribute(i, wsAttriName, wsAttriValue); 388 pElement->GetAttribute(i, wsAttriName, wsAttriValue);
399 if (wsAttriName == FX_WSTRC(L"uuid")) { 389 if (wsAttriName == FX_WSTRC(L"uuid")) {
400 pXFARootNode->SetCData(XFA_ATTRIBUTE_Uuid, wsAttriValue); 390 pXFARootNode->SetCData(XFA_ATTRIBUTE_Uuid, wsAttriValue);
401 } else if (wsAttriName == FX_WSTRC(L"timeStamp")) { 391 } else if (wsAttriName == FX_WSTRC(L"timeStamp")) {
402 pXFARootNode->SetCData(XFA_ATTRIBUTE_TimeStamp, wsAttriValue); 392 pXFARootNode->SetCData(XFA_ATTRIBUTE_TimeStamp, wsAttriValue);
403 } 393 }
404 } 394 }
405 } 395 }
406 IFDE_XMLNode* pXMLConfigDOMRoot = nullptr; 396 CFDE_XMLNode* pXMLConfigDOMRoot = nullptr;
407 CXFA_Node* pXFAConfigDOMRoot = nullptr; 397 CXFA_Node* pXFAConfigDOMRoot = nullptr;
408 { 398 {
409 for (IFDE_XMLNode* pChildItem = 399 for (CFDE_XMLNode* pChildItem =
410 pXMLDocumentNode->GetNodeItem(IFDE_XMLNode::FirstChild); 400 pXMLDocumentNode->GetNodeItem(CFDE_XMLNode::FirstChild);
411 pChildItem; 401 pChildItem;
412 pChildItem = pChildItem->GetNodeItem(IFDE_XMLNode::NextSibling)) { 402 pChildItem = pChildItem->GetNodeItem(CFDE_XMLNode::NextSibling)) {
413 const XFA_PACKETINFO* pPacketInfo = 403 const XFA_PACKETINFO* pPacketInfo =
414 XFA_GetPacketByIndex(XFA_PACKET_Config); 404 XFA_GetPacketByIndex(XFA_PACKET_Config);
415 if (!XFA_FDEExtension_MatchNodeName(pChildItem, pPacketInfo->pName, 405 if (!XFA_FDEExtension_MatchNodeName(pChildItem, pPacketInfo->pName,
416 pPacketInfo->pURI, 406 pPacketInfo->pURI,
417 pPacketInfo->eFlags)) { 407 pPacketInfo->eFlags)) {
418 continue; 408 continue;
419 } 409 }
420 if (pXFARootNode->GetFirstChildByName(pPacketInfo->uHash)) { 410 if (pXFARootNode->GetFirstChildByName(pPacketInfo->uHash)) {
421 return nullptr; 411 return nullptr;
422 } 412 }
423 pXMLConfigDOMRoot = pChildItem; 413 pXMLConfigDOMRoot = pChildItem;
424 pXFAConfigDOMRoot = 414 pXFAConfigDOMRoot =
425 ParseAsXDPPacket_Config(pXMLConfigDOMRoot, XFA_XDPPACKET_Config); 415 ParseAsXDPPacket_Config(pXMLConfigDOMRoot, XFA_XDPPACKET_Config);
426 pXFARootNode->InsertChild(pXFAConfigDOMRoot, NULL); 416 pXFARootNode->InsertChild(pXFAConfigDOMRoot, NULL);
427 } 417 }
428 } 418 }
429 IFDE_XMLNode* pXMLDatasetsDOMRoot = nullptr; 419 CFDE_XMLNode* pXMLDatasetsDOMRoot = nullptr;
430 IFDE_XMLNode* pXMLFormDOMRoot = nullptr; 420 CFDE_XMLNode* pXMLFormDOMRoot = nullptr;
431 IFDE_XMLNode* pXMLTemplateDOMRoot = nullptr; 421 CFDE_XMLNode* pXMLTemplateDOMRoot = nullptr;
432 { 422 {
433 for (IFDE_XMLNode* pChildItem = 423 for (CFDE_XMLNode* pChildItem =
434 pXMLDocumentNode->GetNodeItem(IFDE_XMLNode::FirstChild); 424 pXMLDocumentNode->GetNodeItem(CFDE_XMLNode::FirstChild);
435 pChildItem; 425 pChildItem;
436 pChildItem = pChildItem->GetNodeItem(IFDE_XMLNode::NextSibling)) { 426 pChildItem = pChildItem->GetNodeItem(CFDE_XMLNode::NextSibling)) {
437 if (!pChildItem || pChildItem->GetType() != FDE_XMLNODE_Element) { 427 if (!pChildItem || pChildItem->GetType() != FDE_XMLNODE_Element) {
438 continue; 428 continue;
439 } 429 }
440 if (pChildItem == pXMLConfigDOMRoot) { 430 if (pChildItem == pXMLConfigDOMRoot) {
441 continue; 431 continue;
442 } 432 }
443 IFDE_XMLElement* pElement = 433 CFDE_XMLElement* pElement =
444 reinterpret_cast<IFDE_XMLElement*>(pChildItem); 434 reinterpret_cast<CFDE_XMLElement*>(pChildItem);
445 CFX_WideString wsPacketName; 435 CFX_WideString wsPacketName;
446 pElement->GetLocalTagName(wsPacketName); 436 pElement->GetLocalTagName(wsPacketName);
447 const XFA_PACKETINFO* pPacketInfo = XFA_GetPacketByName(wsPacketName); 437 const XFA_PACKETINFO* pPacketInfo = XFA_GetPacketByName(wsPacketName);
448 if (pPacketInfo && pPacketInfo->pURI) { 438 if (pPacketInfo && pPacketInfo->pURI) {
449 if (!XFA_FDEExtension_MatchNodeName(pElement, pPacketInfo->pName, 439 if (!XFA_FDEExtension_MatchNodeName(pElement, pPacketInfo->pName,
450 pPacketInfo->pURI, 440 pPacketInfo->pURI,
451 pPacketInfo->eFlags)) { 441 pPacketInfo->eFlags)) {
452 pPacketInfo = nullptr; 442 pPacketInfo = nullptr;
453 } 443 }
454 } 444 }
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
505 CXFA_Node* pPacketNode = 495 CXFA_Node* pPacketNode =
506 ParseAsXDPPacket(pXMLFormDOMRoot, XFA_XDPPACKET_Form); 496 ParseAsXDPPacket(pXMLFormDOMRoot, XFA_XDPPACKET_Form);
507 if (pPacketNode) { 497 if (pPacketNode) {
508 pXFARootNode->InsertChild(pPacketNode); 498 pXFARootNode->InsertChild(pPacketNode);
509 } 499 }
510 } 500 }
511 pXFARootNode->SetXMLMappingNode(pXMLDocumentNode); 501 pXFARootNode->SetXMLMappingNode(pXMLDocumentNode);
512 return pXFARootNode; 502 return pXFARootNode;
513 } 503 }
514 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_Config( 504 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_Config(
515 IFDE_XMLNode* pXMLDocumentNode, 505 CFDE_XMLNode* pXMLDocumentNode,
516 XFA_XDPPACKET ePacketID) { 506 XFA_XDPPACKET ePacketID) {
517 if (!XFA_FDEExtension_MatchNodeName( 507 if (!XFA_FDEExtension_MatchNodeName(
518 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_Config)->pName, 508 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_Config)->pName,
519 XFA_GetPacketByIndex(XFA_PACKET_Config)->pURI, 509 XFA_GetPacketByIndex(XFA_PACKET_Config)->pURI,
520 XFA_GetPacketByIndex(XFA_PACKET_Config)->eFlags)) { 510 XFA_GetPacketByIndex(XFA_PACKET_Config)->eFlags)) {
521 return NULL; 511 return NULL;
522 } 512 }
523 CXFA_Node* pNode = 513 CXFA_Node* pNode =
524 m_pFactory->CreateNode(XFA_XDPPACKET_Config, XFA_ELEMENT_Config); 514 m_pFactory->CreateNode(XFA_XDPPACKET_Config, XFA_ELEMENT_Config);
525 if (!pNode) { 515 if (!pNode) {
526 return NULL; 516 return NULL;
527 } 517 }
528 pNode->SetCData(XFA_ATTRIBUTE_Name, 518 pNode->SetCData(XFA_ATTRIBUTE_Name,
529 XFA_GetPacketByIndex(XFA_PACKET_Config)->pName); 519 XFA_GetPacketByIndex(XFA_PACKET_Config)->pName);
530 if (!NormalLoader(pNode, pXMLDocumentNode, ePacketID)) { 520 if (!NormalLoader(pNode, pXMLDocumentNode, ePacketID)) {
531 return NULL; 521 return NULL;
532 } 522 }
533 pNode->SetXMLMappingNode(pXMLDocumentNode); 523 pNode->SetXMLMappingNode(pXMLDocumentNode);
534 return pNode; 524 return pNode;
535 } 525 }
536 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_TemplateForm( 526 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_TemplateForm(
537 IFDE_XMLNode* pXMLDocumentNode, 527 CFDE_XMLNode* pXMLDocumentNode,
538 XFA_XDPPACKET ePacketID) { 528 XFA_XDPPACKET ePacketID) {
539 CXFA_Node* pNode = NULL; 529 CXFA_Node* pNode = NULL;
540 if (ePacketID == XFA_XDPPACKET_Template) { 530 if (ePacketID == XFA_XDPPACKET_Template) {
541 if (XFA_FDEExtension_MatchNodeName( 531 if (XFA_FDEExtension_MatchNodeName(
542 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_Template)->pName, 532 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_Template)->pName,
543 XFA_GetPacketByIndex(XFA_PACKET_Template)->pURI, 533 XFA_GetPacketByIndex(XFA_PACKET_Template)->pURI,
544 XFA_GetPacketByIndex(XFA_PACKET_Template)->eFlags)) { 534 XFA_GetPacketByIndex(XFA_PACKET_Template)->eFlags)) {
545 pNode = 535 pNode =
546 m_pFactory->CreateNode(XFA_XDPPACKET_Template, XFA_ELEMENT_Template); 536 m_pFactory->CreateNode(XFA_XDPPACKET_Template, XFA_ELEMENT_Template);
547 if (!pNode) { 537 if (!pNode) {
548 return NULL; 538 return NULL;
549 } 539 }
550 pNode->SetCData(XFA_ATTRIBUTE_Name, 540 pNode->SetCData(XFA_ATTRIBUTE_Name,
551 XFA_GetPacketByIndex(XFA_PACKET_Template)->pName); 541 XFA_GetPacketByIndex(XFA_PACKET_Template)->pName);
552 if (m_bDocumentParser) { 542 if (m_bDocumentParser) {
553 CFX_WideString wsNamespaceURI; 543 CFX_WideString wsNamespaceURI;
554 IFDE_XMLElement* pXMLDocumentElement = 544 CFDE_XMLElement* pXMLDocumentElement =
555 (IFDE_XMLElement*)pXMLDocumentNode; 545 static_cast<CFDE_XMLElement*>(pXMLDocumentNode);
556 pXMLDocumentElement->GetNamespaceURI(wsNamespaceURI); 546 pXMLDocumentElement->GetNamespaceURI(wsNamespaceURI);
557 if (wsNamespaceURI.IsEmpty()) { 547 if (wsNamespaceURI.IsEmpty()) {
558 pXMLDocumentElement->GetString(L"xmlns:xfa", wsNamespaceURI); 548 pXMLDocumentElement->GetString(L"xmlns:xfa", wsNamespaceURI);
559 } 549 }
560 pNode->GetDocument()->RecognizeXFAVersionNumber(wsNamespaceURI); 550 pNode->GetDocument()->RecognizeXFAVersionNumber(wsNamespaceURI);
561 } 551 }
562 if (!NormalLoader(pNode, pXMLDocumentNode, ePacketID)) { 552 if (!NormalLoader(pNode, pXMLDocumentNode, ePacketID)) {
563 return NULL; 553 return NULL;
564 } 554 }
565 } 555 }
566 } else if (ePacketID == XFA_XDPPACKET_Form) { 556 } else if (ePacketID == XFA_XDPPACKET_Form) {
567 if (XFA_FDEExtension_MatchNodeName( 557 if (XFA_FDEExtension_MatchNodeName(
568 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_Form)->pName, 558 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_Form)->pName,
569 XFA_GetPacketByIndex(XFA_PACKET_Form)->pURI, 559 XFA_GetPacketByIndex(XFA_PACKET_Form)->pURI,
570 XFA_GetPacketByIndex(XFA_PACKET_Form)->eFlags)) { 560 XFA_GetPacketByIndex(XFA_PACKET_Form)->eFlags)) {
571 IFDE_XMLElement* pXMLDocumentElement = (IFDE_XMLElement*)pXMLDocumentNode; 561 CFDE_XMLElement* pXMLDocumentElement =
562 static_cast<CFDE_XMLElement*>(pXMLDocumentNode);
572 CFX_WideString wsChecksum; 563 CFX_WideString wsChecksum;
573 pXMLDocumentElement->GetString(L"checksum", wsChecksum); 564 pXMLDocumentElement->GetString(L"checksum", wsChecksum);
574 if (wsChecksum.GetLength() != 28 || 565 if (wsChecksum.GetLength() != 28 ||
575 m_pXMLParser->m_dwCheckStatus != 0x03) { 566 m_pXMLParser->m_dwCheckStatus != 0x03) {
576 return NULL; 567 return NULL;
577 } 568 }
578 IXFA_ChecksumContext* pChecksum = XFA_Checksum_Create(); 569 IXFA_ChecksumContext* pChecksum = XFA_Checksum_Create();
579 pChecksum->StartChecksum(); 570 pChecksum->StartChecksum();
580 pChecksum->UpdateChecksum(m_pFileRead, m_pXMLParser->m_nStart[0], 571 pChecksum->UpdateChecksum(m_pFileRead, m_pXMLParser->m_nStart[0],
581 m_pXMLParser->m_nSize[0]); 572 m_pXMLParser->m_nSize[0]);
(...skipping 29 matching lines...) Expand all
611 if (!NormalLoader(pNode, pXMLDocumentNode, ePacketID, bUseAttribute)) { 602 if (!NormalLoader(pNode, pXMLDocumentNode, ePacketID, bUseAttribute)) {
612 return NULL; 603 return NULL;
613 } 604 }
614 } 605 }
615 } 606 }
616 if (pNode) { 607 if (pNode) {
617 pNode->SetXMLMappingNode(pXMLDocumentNode); 608 pNode->SetXMLMappingNode(pXMLDocumentNode);
618 } 609 }
619 return pNode; 610 return pNode;
620 } 611 }
621 static IFDE_XMLNode* XFA_GetDataSetsFromXDP(IFDE_XMLNode* pXMLDocumentNode) { 612 static CFDE_XMLNode* XFA_GetDataSetsFromXDP(CFDE_XMLNode* pXMLDocumentNode) {
622 if (XFA_FDEExtension_MatchNodeName( 613 if (XFA_FDEExtension_MatchNodeName(
623 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_Datasets)->pName, 614 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_Datasets)->pName,
624 XFA_GetPacketByIndex(XFA_PACKET_Datasets)->pURI, 615 XFA_GetPacketByIndex(XFA_PACKET_Datasets)->pURI,
625 XFA_GetPacketByIndex(XFA_PACKET_Datasets)->eFlags)) { 616 XFA_GetPacketByIndex(XFA_PACKET_Datasets)->eFlags)) {
626 return pXMLDocumentNode; 617 return pXMLDocumentNode;
627 } 618 }
628 if (!XFA_FDEExtension_MatchNodeName( 619 if (!XFA_FDEExtension_MatchNodeName(
629 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_XDP)->pName, 620 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_XDP)->pName,
630 XFA_GetPacketByIndex(XFA_PACKET_XDP)->pURI, 621 XFA_GetPacketByIndex(XFA_PACKET_XDP)->pURI,
631 XFA_GetPacketByIndex(XFA_PACKET_XDP)->eFlags)) { 622 XFA_GetPacketByIndex(XFA_PACKET_XDP)->eFlags)) {
632 return NULL; 623 return NULL;
633 } 624 }
634 for (IFDE_XMLNode* pDatasetsNode = 625 for (CFDE_XMLNode* pDatasetsNode =
635 pXMLDocumentNode->GetNodeItem(IFDE_XMLNode::FirstChild); 626 pXMLDocumentNode->GetNodeItem(CFDE_XMLNode::FirstChild);
636 pDatasetsNode; 627 pDatasetsNode;
637 pDatasetsNode = pDatasetsNode->GetNodeItem(IFDE_XMLNode::NextSibling)) { 628 pDatasetsNode = pDatasetsNode->GetNodeItem(CFDE_XMLNode::NextSibling)) {
638 if (!XFA_FDEExtension_MatchNodeName( 629 if (!XFA_FDEExtension_MatchNodeName(
639 pDatasetsNode, XFA_GetPacketByIndex(XFA_PACKET_Datasets)->pName, 630 pDatasetsNode, XFA_GetPacketByIndex(XFA_PACKET_Datasets)->pName,
640 XFA_GetPacketByIndex(XFA_PACKET_Datasets)->pURI, 631 XFA_GetPacketByIndex(XFA_PACKET_Datasets)->pURI,
641 XFA_GetPacketByIndex(XFA_PACKET_Datasets)->eFlags)) { 632 XFA_GetPacketByIndex(XFA_PACKET_Datasets)->eFlags)) {
642 continue; 633 continue;
643 } 634 }
644 return pDatasetsNode; 635 return pDatasetsNode;
645 } 636 }
646 return NULL; 637 return NULL;
647 } 638 }
648 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_Data( 639 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_Data(
649 IFDE_XMLNode* pXMLDocumentNode, 640 CFDE_XMLNode* pXMLDocumentNode,
650 XFA_XDPPACKET ePacketID) { 641 XFA_XDPPACKET ePacketID) {
651 IFDE_XMLNode* pDatasetsXMLNode = XFA_GetDataSetsFromXDP(pXMLDocumentNode); 642 CFDE_XMLNode* pDatasetsXMLNode = XFA_GetDataSetsFromXDP(pXMLDocumentNode);
652 if (pDatasetsXMLNode) { 643 if (pDatasetsXMLNode) {
653 CXFA_Node* pNode = 644 CXFA_Node* pNode =
654 m_pFactory->CreateNode(XFA_XDPPACKET_Datasets, XFA_ELEMENT_DataModel); 645 m_pFactory->CreateNode(XFA_XDPPACKET_Datasets, XFA_ELEMENT_DataModel);
655 if (!pNode) { 646 if (!pNode) {
656 return NULL; 647 return NULL;
657 } 648 }
658 pNode->SetCData(XFA_ATTRIBUTE_Name, 649 pNode->SetCData(XFA_ATTRIBUTE_Name,
659 XFA_GetPacketByIndex(XFA_PACKET_Datasets)->pName); 650 XFA_GetPacketByIndex(XFA_PACKET_Datasets)->pName);
660 if (!DataLoader(pNode, pDatasetsXMLNode, FALSE)) { 651 if (!DataLoader(pNode, pDatasetsXMLNode, FALSE)) {
661 return NULL; 652 return NULL;
662 } 653 }
663 pNode->SetXMLMappingNode(pDatasetsXMLNode); 654 pNode->SetXMLMappingNode(pDatasetsXMLNode);
664 return pNode; 655 return pNode;
665 } 656 }
666 IFDE_XMLNode* pDataXMLNode = NULL; 657 CFDE_XMLNode* pDataXMLNode = NULL;
667 if (XFA_FDEExtension_MatchNodeName( 658 if (XFA_FDEExtension_MatchNodeName(
668 pXMLDocumentNode, FX_WSTRC(L"data"), 659 pXMLDocumentNode, FX_WSTRC(L"data"),
669 XFA_GetPacketByIndex(XFA_PACKET_Datasets)->pURI, 660 XFA_GetPacketByIndex(XFA_PACKET_Datasets)->pURI,
670 XFA_GetPacketByIndex(XFA_PACKET_Datasets)->eFlags)) { 661 XFA_GetPacketByIndex(XFA_PACKET_Datasets)->eFlags)) {
671 ((IFDE_XMLElement*)pXMLDocumentNode)->RemoveAttribute(L"xmlns:xfa"); 662 static_cast<CFDE_XMLElement*>(pXMLDocumentNode)
663 ->RemoveAttribute(L"xmlns:xfa");
672 pDataXMLNode = pXMLDocumentNode; 664 pDataXMLNode = pXMLDocumentNode;
673 } else { 665 } else {
674 IFDE_XMLElement* pDataElement = 666 CFDE_XMLElement* pDataElement = new CFDE_XMLElement(FX_WSTRC(L"xfa:data"));
675 IFDE_XMLElement::Create(FX_WSTRC(L"xfa:data")); 667 CFDE_XMLNode* pParentXMLNode =
676 IFDE_XMLNode* pParentXMLNode = 668 pXMLDocumentNode->GetNodeItem(CFDE_XMLNode::Parent);
677 pXMLDocumentNode->GetNodeItem(IFDE_XMLNode::Parent);
678 if (pParentXMLNode) { 669 if (pParentXMLNode) {
679 pParentXMLNode->RemoveChildNode(pXMLDocumentNode); 670 pParentXMLNode->RemoveChildNode(pXMLDocumentNode);
680 } 671 }
681 FXSYS_assert(pXMLDocumentNode->GetType() == FDE_XMLNODE_Element); 672 FXSYS_assert(pXMLDocumentNode->GetType() == FDE_XMLNODE_Element);
682 if (pXMLDocumentNode->GetType() == FDE_XMLNODE_Element) { 673 if (pXMLDocumentNode->GetType() == FDE_XMLNODE_Element) {
683 ((IFDE_XMLElement*)pXMLDocumentNode)->RemoveAttribute(L"xmlns:xfa"); 674 static_cast<CFDE_XMLElement*>(pXMLDocumentNode)
675 ->RemoveAttribute(L"xmlns:xfa");
684 } 676 }
685 pDataElement->InsertChildNode(pXMLDocumentNode); 677 pDataElement->InsertChildNode(pXMLDocumentNode);
686 pDataXMLNode = pDataElement; 678 pDataXMLNode = pDataElement;
687 } 679 }
688 if (pDataXMLNode) { 680 if (pDataXMLNode) {
689 CXFA_Node* pNode = 681 CXFA_Node* pNode =
690 m_pFactory->CreateNode(XFA_XDPPACKET_Datasets, XFA_ELEMENT_DataGroup); 682 m_pFactory->CreateNode(XFA_XDPPACKET_Datasets, XFA_ELEMENT_DataGroup);
691 if (!pNode) { 683 if (!pNode) {
692 if (pDataXMLNode != pXMLDocumentNode) { 684 if (pDataXMLNode != pXMLDocumentNode) {
693 pDataXMLNode->Release(); 685 pDataXMLNode->Release();
694 } 686 }
695 return NULL; 687 return NULL;
696 } 688 }
697 CFX_WideString wsLocalName; 689 CFX_WideString wsLocalName;
698 ((IFDE_XMLElement*)pDataXMLNode)->GetLocalTagName(wsLocalName); 690 static_cast<CFDE_XMLElement*>(pDataXMLNode)->GetLocalTagName(wsLocalName);
699 pNode->SetCData(XFA_ATTRIBUTE_Name, wsLocalName); 691 pNode->SetCData(XFA_ATTRIBUTE_Name, wsLocalName);
700 if (!DataLoader(pNode, pDataXMLNode, TRUE)) { 692 if (!DataLoader(pNode, pDataXMLNode, TRUE)) {
701 return NULL; 693 return NULL;
702 } 694 }
703 pNode->SetXMLMappingNode(pDataXMLNode); 695 pNode->SetXMLMappingNode(pDataXMLNode);
704 if (pDataXMLNode != pXMLDocumentNode) { 696 if (pDataXMLNode != pXMLDocumentNode) {
705 pNode->SetFlag(XFA_NODEFLAG_OwnXMLNode, TRUE, FALSE); 697 pNode->SetFlag(XFA_NODEFLAG_OwnXMLNode, TRUE, FALSE);
706 } 698 }
707 return pNode; 699 return pNode;
708 } 700 }
709 return NULL; 701 return NULL;
710 } 702 }
711 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_LocaleConnectionSourceSet( 703 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_LocaleConnectionSourceSet(
712 IFDE_XMLNode* pXMLDocumentNode, 704 CFDE_XMLNode* pXMLDocumentNode,
713 XFA_XDPPACKET ePacketID) { 705 XFA_XDPPACKET ePacketID) {
714 CXFA_Node* pNode = NULL; 706 CXFA_Node* pNode = NULL;
715 if (ePacketID == XFA_XDPPACKET_LocaleSet) { 707 if (ePacketID == XFA_XDPPACKET_LocaleSet) {
716 if (XFA_FDEExtension_MatchNodeName( 708 if (XFA_FDEExtension_MatchNodeName(
717 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_LocaleSet)->pName, 709 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_LocaleSet)->pName,
718 XFA_GetPacketByIndex(XFA_PACKET_LocaleSet)->pURI, 710 XFA_GetPacketByIndex(XFA_PACKET_LocaleSet)->pURI,
719 XFA_GetPacketByIndex(XFA_PACKET_LocaleSet)->eFlags)) { 711 XFA_GetPacketByIndex(XFA_PACKET_LocaleSet)->eFlags)) {
720 pNode = m_pFactory->CreateNode(XFA_XDPPACKET_LocaleSet, 712 pNode = m_pFactory->CreateNode(XFA_XDPPACKET_LocaleSet,
721 XFA_ELEMENT_LocaleSet); 713 XFA_ELEMENT_LocaleSet);
722 if (!pNode) { 714 if (!pNode) {
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
761 return NULL; 753 return NULL;
762 } 754 }
763 } 755 }
764 } 756 }
765 if (pNode) { 757 if (pNode) {
766 pNode->SetXMLMappingNode(pXMLDocumentNode); 758 pNode->SetXMLMappingNode(pXMLDocumentNode);
767 } 759 }
768 return pNode; 760 return pNode;
769 } 761 }
770 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_Xdc( 762 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_Xdc(
771 IFDE_XMLNode* pXMLDocumentNode, 763 CFDE_XMLNode* pXMLDocumentNode,
772 XFA_XDPPACKET ePacketID) { 764 XFA_XDPPACKET ePacketID) {
773 if (XFA_FDEExtension_MatchNodeName( 765 if (XFA_FDEExtension_MatchNodeName(
774 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_Xdc)->pName, 766 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_Xdc)->pName,
775 XFA_GetPacketByIndex(XFA_PACKET_Xdc)->pURI, 767 XFA_GetPacketByIndex(XFA_PACKET_Xdc)->pURI,
776 XFA_GetPacketByIndex(XFA_PACKET_Xdc)->eFlags)) { 768 XFA_GetPacketByIndex(XFA_PACKET_Xdc)->eFlags)) {
777 CXFA_Node* pNode = 769 CXFA_Node* pNode =
778 m_pFactory->CreateNode(XFA_XDPPACKET_Xdc, XFA_ELEMENT_Xdc); 770 m_pFactory->CreateNode(XFA_XDPPACKET_Xdc, XFA_ELEMENT_Xdc);
779 if (!pNode) { 771 if (!pNode) {
780 return NULL; 772 return NULL;
781 } 773 }
782 pNode->SetCData(XFA_ATTRIBUTE_Name, 774 pNode->SetCData(XFA_ATTRIBUTE_Name,
783 XFA_GetPacketByIndex(XFA_PACKET_Xdc)->pName); 775 XFA_GetPacketByIndex(XFA_PACKET_Xdc)->pName);
784 pNode->SetXMLMappingNode(pXMLDocumentNode); 776 pNode->SetXMLMappingNode(pXMLDocumentNode);
785 return pNode; 777 return pNode;
786 } 778 }
787 return NULL; 779 return NULL;
788 } 780 }
789 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_User( 781 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_User(
790 IFDE_XMLNode* pXMLDocumentNode, 782 CFDE_XMLNode* pXMLDocumentNode,
791 XFA_XDPPACKET ePacketID) { 783 XFA_XDPPACKET ePacketID) {
792 CXFA_Node* pNode = 784 CXFA_Node* pNode =
793 m_pFactory->CreateNode(XFA_XDPPACKET_XDP, XFA_ELEMENT_Packet); 785 m_pFactory->CreateNode(XFA_XDPPACKET_XDP, XFA_ELEMENT_Packet);
794 if (!pNode) { 786 if (!pNode) {
795 return NULL; 787 return NULL;
796 } 788 }
797 CFX_WideString wsName; 789 CFX_WideString wsName;
798 ((IFDE_XMLElement*)pXMLDocumentNode)->GetLocalTagName(wsName); 790 static_cast<CFDE_XMLElement*>(pXMLDocumentNode)->GetLocalTagName(wsName);
799 pNode->SetCData(XFA_ATTRIBUTE_Name, wsName); 791 pNode->SetCData(XFA_ATTRIBUTE_Name, wsName);
800 if (!UserPacketLoader(pNode, pXMLDocumentNode)) { 792 if (!UserPacketLoader(pNode, pXMLDocumentNode)) {
801 return NULL; 793 return NULL;
802 } 794 }
803 pNode->SetXMLMappingNode(pXMLDocumentNode); 795 pNode->SetXMLMappingNode(pXMLDocumentNode);
804 return pNode; 796 return pNode;
805 } 797 }
806 CXFA_Node* CXFA_SimpleParser::UserPacketLoader(CXFA_Node* pXFANode, 798 CXFA_Node* CXFA_SimpleParser::UserPacketLoader(CXFA_Node* pXFANode,
807 IFDE_XMLNode* pXMLDoc) { 799 CFDE_XMLNode* pXMLDoc) {
808 return pXFANode; 800 return pXFANode;
809 } 801 }
810 static FX_BOOL XFA_FDEExtension_IsStringAllWhitespace(CFX_WideString wsText) { 802 static FX_BOOL XFA_FDEExtension_IsStringAllWhitespace(CFX_WideString wsText) {
811 wsText.TrimRight(L"\x20\x9\xD\xA"); 803 wsText.TrimRight(L"\x20\x9\xD\xA");
812 return wsText.IsEmpty(); 804 return wsText.IsEmpty();
813 } 805 }
814 CXFA_Node* CXFA_SimpleParser::DataLoader(CXFA_Node* pXFANode, 806 CXFA_Node* CXFA_SimpleParser::DataLoader(CXFA_Node* pXFANode,
815 IFDE_XMLNode* pXMLDoc, 807 CFDE_XMLNode* pXMLDoc,
816 FX_BOOL bDoTransform) { 808 FX_BOOL bDoTransform) {
817 ParseDataGroup(pXFANode, pXMLDoc, XFA_XDPPACKET_Datasets); 809 ParseDataGroup(pXFANode, pXMLDoc, XFA_XDPPACKET_Datasets);
818 return pXFANode; 810 return pXFANode;
819 } 811 }
820 CXFA_Node* CXFA_SimpleParser::NormalLoader(CXFA_Node* pXFANode, 812 CXFA_Node* CXFA_SimpleParser::NormalLoader(CXFA_Node* pXFANode,
821 IFDE_XMLNode* pXMLDoc, 813 CFDE_XMLNode* pXMLDoc,
822 XFA_XDPPACKET ePacketID, 814 XFA_XDPPACKET ePacketID,
823 FX_BOOL bUseAttribute) { 815 FX_BOOL bUseAttribute) {
824 FX_BOOL bOneOfPropertyFound = FALSE; 816 FX_BOOL bOneOfPropertyFound = FALSE;
825 for (IFDE_XMLNode* pXMLChild = pXMLDoc->GetNodeItem(IFDE_XMLNode::FirstChild); 817 for (CFDE_XMLNode* pXMLChild = pXMLDoc->GetNodeItem(CFDE_XMLNode::FirstChild);
826 pXMLChild; 818 pXMLChild;
827 pXMLChild = pXMLChild->GetNodeItem(IFDE_XMLNode::NextSibling)) { 819 pXMLChild = pXMLChild->GetNodeItem(CFDE_XMLNode::NextSibling)) {
828 switch (pXMLChild->GetType()) { 820 switch (pXMLChild->GetType()) {
829 case FDE_XMLNODE_Element: { 821 case FDE_XMLNODE_Element: {
830 IFDE_XMLElement* pXMLElement = (IFDE_XMLElement*)pXMLChild; 822 CFDE_XMLElement* pXMLElement = static_cast<CFDE_XMLElement*>(pXMLChild);
831 CFX_WideString wsTagName; 823 CFX_WideString wsTagName;
832 pXMLElement->GetLocalTagName(wsTagName); 824 pXMLElement->GetLocalTagName(wsTagName);
833 const XFA_ELEMENTINFO* pElemInfo = XFA_GetElementByName(wsTagName); 825 const XFA_ELEMENTINFO* pElemInfo = XFA_GetElementByName(wsTagName);
834 if (!pElemInfo) { 826 if (!pElemInfo) {
835 continue; 827 continue;
836 } 828 }
837 const XFA_PROPERTY* pPropertyInfo = XFA_GetPropertyOfElement( 829 const XFA_PROPERTY* pPropertyInfo = XFA_GetPropertyOfElement(
838 pXFANode->GetClassID(), pElemInfo->eName, ePacketID); 830 pXFANode->GetClassID(), pElemInfo->eName, ePacketID);
839 if (pPropertyInfo && 831 if (pPropertyInfo &&
840 ((pPropertyInfo->uFlags & 832 ((pPropertyInfo->uFlags &
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
894 if (IsNeedValue) { 886 if (IsNeedValue) {
895 ParseContentNode(pXFAChild, pXMLElement, ePacketID); 887 ParseContentNode(pXFAChild, pXMLElement, ePacketID);
896 } 888 }
897 break; 889 break;
898 default: 890 default:
899 NormalLoader(pXFAChild, pXMLElement, ePacketID, bUseAttribute); 891 NormalLoader(pXFAChild, pXMLElement, ePacketID, bUseAttribute);
900 break; 892 break;
901 } 893 }
902 } break; 894 } break;
903 case FDE_XMLNODE_Instruction: 895 case FDE_XMLNODE_Instruction:
904 ParseInstruction(pXFANode, (IFDE_XMLInstruction*)pXMLChild, ePacketID); 896 ParseInstruction(pXFANode, static_cast<CFDE_XMLInstruction*>(pXMLChild),
897 ePacketID);
905 break; 898 break;
906 default: 899 default:
907 break; 900 break;
908 } 901 }
909 } 902 }
910 return pXFANode; 903 return pXFANode;
911 } 904 }
912 FX_BOOL XFA_RecognizeRichText(IFDE_XMLElement* pRichTextXMLNode) { 905 FX_BOOL XFA_RecognizeRichText(CFDE_XMLElement* pRichTextXMLNode) {
913 if (pRichTextXMLNode) { 906 if (pRichTextXMLNode) {
914 CFX_WideString wsNamespaceURI; 907 CFX_WideString wsNamespaceURI;
915 XFA_FDEExtension_GetElementTagNamespaceURI(pRichTextXMLNode, 908 XFA_FDEExtension_GetElementTagNamespaceURI(pRichTextXMLNode,
916 wsNamespaceURI); 909 wsNamespaceURI);
917 if (wsNamespaceURI == FX_WSTRC(L"http://www.w3.org/1999/xhtml")) { 910 if (wsNamespaceURI == FX_WSTRC(L"http://www.w3.org/1999/xhtml")) {
918 return TRUE; 911 return TRUE;
919 } 912 }
920 } 913 }
921 return FALSE; 914 return FALSE;
922 } 915 }
923 class RichTextNodeVisitor { 916 class RichTextNodeVisitor {
924 public: 917 public:
925 static inline IFDE_XMLNode* GetFirstChild(IFDE_XMLNode* pNode) { 918 static inline CFDE_XMLNode* GetFirstChild(CFDE_XMLNode* pNode) {
926 return pNode->GetNodeItem(IFDE_XMLNode::FirstChild); 919 return pNode->GetNodeItem(CFDE_XMLNode::FirstChild);
927 } 920 }
928 static inline IFDE_XMLNode* GetNextSibling(IFDE_XMLNode* pNode) { 921 static inline CFDE_XMLNode* GetNextSibling(CFDE_XMLNode* pNode) {
929 return pNode->GetNodeItem(IFDE_XMLNode::NextSibling); 922 return pNode->GetNodeItem(CFDE_XMLNode::NextSibling);
930 } 923 }
931 static inline IFDE_XMLNode* GetParent(IFDE_XMLNode* pNode) { 924 static inline CFDE_XMLNode* GetParent(CFDE_XMLNode* pNode) {
932 return pNode->GetNodeItem(IFDE_XMLNode::Parent); 925 return pNode->GetNodeItem(CFDE_XMLNode::Parent);
933 } 926 }
934 }; 927 };
935 928
936 void XFA_ConvertXMLToPlainText(IFDE_XMLElement* pRootXMLNode, 929 void XFA_ConvertXMLToPlainText(CFDE_XMLElement* pRootXMLNode,
937 CFX_WideString& wsOutput) { 930 CFX_WideString& wsOutput) {
938 for (IFDE_XMLNode* pXMLChild = 931 for (CFDE_XMLNode* pXMLChild =
939 pRootXMLNode->GetNodeItem(IFDE_XMLNode::FirstChild); 932 pRootXMLNode->GetNodeItem(CFDE_XMLNode::FirstChild);
940 pXMLChild; 933 pXMLChild;
941 pXMLChild = pXMLChild->GetNodeItem(IFDE_XMLNode::NextSibling)) { 934 pXMLChild = pXMLChild->GetNodeItem(CFDE_XMLNode::NextSibling)) {
942 switch (pXMLChild->GetType()) { 935 switch (pXMLChild->GetType()) {
943 case FDE_XMLNODE_Element: { 936 case FDE_XMLNODE_Element: {
944 CFX_WideString wsTextData; 937 CFX_WideString wsTextData;
945 ((IFDE_XMLElement*)pXMLChild)->GetTextData(wsTextData); 938 static_cast<CFDE_XMLElement*>(pXMLChild)->GetTextData(wsTextData);
946 wsTextData += FX_WSTRC(L"\n"); 939 wsTextData += FX_WSTRC(L"\n");
947 wsOutput += wsTextData; 940 wsOutput += wsTextData;
948 } break; 941 } break;
949 case FDE_XMLNODE_Text: { 942 case FDE_XMLNODE_Text: {
950 CFX_WideString wsText; 943 CFX_WideString wsText;
951 ((IFDE_XMLText*)pXMLChild)->GetText(wsText); 944 static_cast<CFDE_XMLText*>(pXMLChild)->GetText(wsText);
952 if (XFA_FDEExtension_IsStringAllWhitespace(wsText)) { 945 if (XFA_FDEExtension_IsStringAllWhitespace(wsText)) {
953 continue; 946 continue;
954 } else { 947 } else {
955 wsOutput = wsText; 948 wsOutput = wsText;
956 } 949 }
957 } break; 950 } break;
958 case FDE_XMLNODE_CharData: { 951 case FDE_XMLNODE_CharData: {
959 CFX_WideString wsCharData; 952 CFX_WideString wsCharData;
960 ((IFDE_XMLCharData*)pXMLChild)->GetCharData(wsCharData); 953 static_cast<CFDE_XMLCharData*>(pXMLChild)->GetCharData(wsCharData);
961 if (XFA_FDEExtension_IsStringAllWhitespace(wsCharData)) { 954 if (XFA_FDEExtension_IsStringAllWhitespace(wsCharData)) {
962 continue; 955 continue;
963 } else { 956 } else {
964 wsOutput = wsCharData; 957 wsOutput = wsCharData;
965 } 958 }
966 } break; 959 } break;
967 default: 960 default:
968 FXSYS_assert(FALSE); 961 FXSYS_assert(FALSE);
969 break; 962 break;
970 } 963 }
971 } 964 }
972 } 965 }
973 966
974 void CXFA_SimpleParser::ParseContentNode(CXFA_Node* pXFANode, 967 void CXFA_SimpleParser::ParseContentNode(CXFA_Node* pXFANode,
975 IFDE_XMLNode* pXMLNode, 968 CFDE_XMLNode* pXMLNode,
976 XFA_XDPPACKET ePacketID) { 969 XFA_XDPPACKET ePacketID) {
977 XFA_ELEMENT element = XFA_ELEMENT_Sharptext; 970 XFA_ELEMENT element = XFA_ELEMENT_Sharptext;
978 if (pXFANode->GetClassID() == XFA_ELEMENT_ExData) { 971 if (pXFANode->GetClassID() == XFA_ELEMENT_ExData) {
979 CFX_WideStringC wsContentType = 972 CFX_WideStringC wsContentType =
980 pXFANode->GetCData(XFA_ATTRIBUTE_ContentType); 973 pXFANode->GetCData(XFA_ATTRIBUTE_ContentType);
981 if (wsContentType == FX_WSTRC(L"text/html")) 974 if (wsContentType == FX_WSTRC(L"text/html"))
982 element = XFA_ELEMENT_SharpxHTML; 975 element = XFA_ELEMENT_SharpxHTML;
983 else if (wsContentType == FX_WSTRC(L"text/xml")) 976 else if (wsContentType == FX_WSTRC(L"text/xml"))
984 element = XFA_ELEMENT_Sharpxml; 977 element = XFA_ELEMENT_Sharpxml;
985 } 978 }
986 if (element == XFA_ELEMENT_SharpxHTML) 979 if (element == XFA_ELEMENT_SharpxHTML)
987 pXFANode->SetXMLMappingNode(pXMLNode); 980 pXFANode->SetXMLMappingNode(pXMLNode);
988 981
989 CFX_WideString wsValue; 982 CFX_WideString wsValue;
990 for (IFDE_XMLNode* pXMLChild = 983 for (CFDE_XMLNode* pXMLChild =
991 pXMLNode->GetNodeItem(IFDE_XMLNode::FirstChild); 984 pXMLNode->GetNodeItem(CFDE_XMLNode::FirstChild);
992 pXMLChild; 985 pXMLChild;
993 pXMLChild = pXMLChild->GetNodeItem(IFDE_XMLNode::NextSibling)) { 986 pXMLChild = pXMLChild->GetNodeItem(CFDE_XMLNode::NextSibling)) {
994 FDE_XMLNODETYPE eNodeType = pXMLChild->GetType(); 987 FDE_XMLNODETYPE eNodeType = pXMLChild->GetType();
995 if (eNodeType == FDE_XMLNODE_Instruction) 988 if (eNodeType == FDE_XMLNODE_Instruction)
996 continue; 989 continue;
997 990
998 if (element == XFA_ELEMENT_SharpxHTML) { 991 if (element == XFA_ELEMENT_SharpxHTML) {
999 if (eNodeType != FDE_XMLNODE_Element) 992 if (eNodeType != FDE_XMLNODE_Element)
1000 break; 993 break;
1001 994
1002 if (XFA_RecognizeRichText((IFDE_XMLElement*)pXMLChild)) 995 if (XFA_RecognizeRichText(static_cast<CFDE_XMLElement*>(pXMLChild)))
1003 XFA_GetPlainTextFromRichText((IFDE_XMLElement*)pXMLChild, wsValue); 996 XFA_GetPlainTextFromRichText(static_cast<CFDE_XMLElement*>(pXMLChild),
997 wsValue);
1004 } else if (element == XFA_ELEMENT_Sharpxml) { 998 } else if (element == XFA_ELEMENT_Sharpxml) {
1005 if (eNodeType != FDE_XMLNODE_Element) 999 if (eNodeType != FDE_XMLNODE_Element)
1006 break; 1000 break;
1007 XFA_ConvertXMLToPlainText((IFDE_XMLElement*)pXMLChild, wsValue); 1001 XFA_ConvertXMLToPlainText(static_cast<CFDE_XMLElement*>(pXMLChild),
1002 wsValue);
1008 } else { 1003 } else {
1009 if (eNodeType == FDE_XMLNODE_Element) 1004 if (eNodeType == FDE_XMLNODE_Element)
1010 break; 1005 break;
1011 if (eNodeType == FDE_XMLNODE_Text) 1006 if (eNodeType == FDE_XMLNODE_Text)
1012 ((IFDE_XMLText*)pXMLChild)->GetText(wsValue); 1007 static_cast<CFDE_XMLText*>(pXMLChild)->GetText(wsValue);
1013 else if (eNodeType == FDE_XMLNODE_CharData) 1008 else if (eNodeType == FDE_XMLNODE_CharData)
1014 ((IFDE_XMLCharData*)pXMLChild)->GetCharData(wsValue); 1009 static_cast<CFDE_XMLCharData*>(pXMLChild)->GetCharData(wsValue);
1015 } 1010 }
1016 break; 1011 break;
1017 } 1012 }
1018 if (!wsValue.IsEmpty()) { 1013 if (!wsValue.IsEmpty()) {
1019 if (pXFANode->GetObjectType() == XFA_OBJECTTYPE_ContentNode) { 1014 if (pXFANode->GetObjectType() == XFA_OBJECTTYPE_ContentNode) {
1020 CXFA_Node* pContentRawDataNode = 1015 CXFA_Node* pContentRawDataNode =
1021 m_pFactory->CreateNode(ePacketID, element); 1016 m_pFactory->CreateNode(ePacketID, element);
1022 FXSYS_assert(pContentRawDataNode); 1017 FXSYS_assert(pContentRawDataNode);
1023 pContentRawDataNode->SetCData(XFA_ATTRIBUTE_Value, wsValue); 1018 pContentRawDataNode->SetCData(XFA_ATTRIBUTE_Value, wsValue);
1024 pXFANode->InsertChild(pContentRawDataNode); 1019 pXFANode->InsertChild(pContentRawDataNode);
1025 } else { 1020 } else {
1026 pXFANode->SetCData(XFA_ATTRIBUTE_Value, wsValue); 1021 pXFANode->SetCData(XFA_ATTRIBUTE_Value, wsValue);
1027 } 1022 }
1028 } 1023 }
1029 } 1024 }
1030 1025
1031 void CXFA_SimpleParser::ParseDataGroup(CXFA_Node* pXFANode, 1026 void CXFA_SimpleParser::ParseDataGroup(CXFA_Node* pXFANode,
1032 IFDE_XMLNode* pXMLNode, 1027 CFDE_XMLNode* pXMLNode,
1033 XFA_XDPPACKET ePacketID) { 1028 XFA_XDPPACKET ePacketID) {
1034 for (IFDE_XMLNode* pXMLChild = 1029 for (CFDE_XMLNode* pXMLChild =
1035 pXMLNode->GetNodeItem(IFDE_XMLNode::FirstChild); 1030 pXMLNode->GetNodeItem(CFDE_XMLNode::FirstChild);
1036 pXMLChild; 1031 pXMLChild;
1037 pXMLChild = pXMLChild->GetNodeItem(IFDE_XMLNode::NextSibling)) { 1032 pXMLChild = pXMLChild->GetNodeItem(CFDE_XMLNode::NextSibling)) {
1038 switch (pXMLChild->GetType()) { 1033 switch (pXMLChild->GetType()) {
1039 case FDE_XMLNODE_Element: { 1034 case FDE_XMLNODE_Element: {
1040 IFDE_XMLElement* pXMLElement = (IFDE_XMLElement*)pXMLChild; 1035 CFDE_XMLElement* pXMLElement = static_cast<CFDE_XMLElement*>(pXMLChild);
1041 { 1036 {
1042 CFX_WideString wsNamespaceURI; 1037 CFX_WideString wsNamespaceURI;
1043 XFA_FDEExtension_GetElementTagNamespaceURI(pXMLElement, 1038 XFA_FDEExtension_GetElementTagNamespaceURI(pXMLElement,
1044 wsNamespaceURI); 1039 wsNamespaceURI);
1045 if (wsNamespaceURI == 1040 if (wsNamespaceURI ==
1046 FX_WSTRC(L"http://www.xfa.com/schema/xfa-package/") || 1041 FX_WSTRC(L"http://www.xfa.com/schema/xfa-package/") ||
1047 wsNamespaceURI == 1042 wsNamespaceURI ==
1048 FX_WSTRC(L"http://www.xfa.org/schema/xfa-package/") || 1043 FX_WSTRC(L"http://www.xfa.org/schema/xfa-package/") ||
1049 wsNamespaceURI == 1044 wsNamespaceURI ==
1050 FX_WSTRC(L"http://www.w3.org/2001/XMLSchema-instance")) { 1045 FX_WSTRC(L"http://www.w3.org/2001/XMLSchema-instance")) {
(...skipping 22 matching lines...) Expand all
1073 if (XFA_FDEExtension_FindAttributeWithNS( 1068 if (XFA_FDEExtension_FindAttributeWithNS(
1074 pXMLElement, FX_WSTRC(L"contentType"), 1069 pXMLElement, FX_WSTRC(L"contentType"),
1075 FX_WSTRC(L"http://www.xfa.org/schema/xfa-data/1.0/"), 1070 FX_WSTRC(L"http://www.xfa.org/schema/xfa-data/1.0/"),
1076 wsContentType)) { 1071 wsContentType)) {
1077 if (!wsContentType.IsEmpty()) { 1072 if (!wsContentType.IsEmpty()) {
1078 eNodeType = XFA_ELEMENT_DataValue; 1073 eNodeType = XFA_ELEMENT_DataValue;
1079 } 1074 }
1080 } 1075 }
1081 } 1076 }
1082 if (eNodeType == XFA_ELEMENT_DataModel) { 1077 if (eNodeType == XFA_ELEMENT_DataModel) {
1083 for (IFDE_XMLNode* pXMLDataChild = 1078 for (CFDE_XMLNode* pXMLDataChild =
1084 pXMLElement->GetNodeItem(IFDE_XMLNode::FirstChild); 1079 pXMLElement->GetNodeItem(CFDE_XMLNode::FirstChild);
1085 pXMLDataChild; pXMLDataChild = pXMLDataChild->GetNodeItem( 1080 pXMLDataChild; pXMLDataChild = pXMLDataChild->GetNodeItem(
1086 IFDE_XMLNode::NextSibling)) { 1081 CFDE_XMLNode::NextSibling)) {
1087 if (pXMLDataChild->GetType() == FDE_XMLNODE_Element) { 1082 if (pXMLDataChild->GetType() == FDE_XMLNODE_Element) {
1088 if (!XFA_RecognizeRichText((IFDE_XMLElement*)pXMLDataChild)) { 1083 if (!XFA_RecognizeRichText(
1084 static_cast<CFDE_XMLElement*>(pXMLDataChild))) {
1089 eNodeType = XFA_ELEMENT_DataGroup; 1085 eNodeType = XFA_ELEMENT_DataGroup;
1090 break; 1086 break;
1091 } 1087 }
1092 } 1088 }
1093 } 1089 }
1094 } 1090 }
1095 if (eNodeType == XFA_ELEMENT_DataModel) { 1091 if (eNodeType == XFA_ELEMENT_DataModel) {
1096 eNodeType = XFA_ELEMENT_DataValue; 1092 eNodeType = XFA_ELEMENT_DataValue;
1097 } 1093 }
1098 CXFA_Node* pXFAChild = 1094 CXFA_Node* pXFAChild =
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
1161 } else { 1157 } else {
1162 if (bNeedValue) { 1158 if (bNeedValue) {
1163 ParseDataValue(pXFAChild, pXMLChild, XFA_XDPPACKET_Datasets); 1159 ParseDataValue(pXFAChild, pXMLChild, XFA_XDPPACKET_Datasets);
1164 } 1160 }
1165 } 1161 }
1166 pXFAChild->SetXMLMappingNode(pXMLElement); 1162 pXFAChild->SetXMLMappingNode(pXMLElement);
1167 pXFAChild->SetFlag(XFA_NODEFLAG_Initialized, TRUE, FALSE); 1163 pXFAChild->SetFlag(XFA_NODEFLAG_Initialized, TRUE, FALSE);
1168 } 1164 }
1169 continue; 1165 continue;
1170 case FDE_XMLNODE_CharData: { 1166 case FDE_XMLNODE_CharData: {
1171 IFDE_XMLCharData* pXMLCharData = (IFDE_XMLCharData*)pXMLChild; 1167 CFDE_XMLCharData* pXMLCharData =
1168 static_cast<CFDE_XMLCharData*>(pXMLChild);
1172 CFX_WideString wsCharData; 1169 CFX_WideString wsCharData;
1173 pXMLCharData->GetCharData(wsCharData); 1170 pXMLCharData->GetCharData(wsCharData);
1174 if (XFA_FDEExtension_IsStringAllWhitespace(wsCharData)) { 1171 if (XFA_FDEExtension_IsStringAllWhitespace(wsCharData)) {
1175 continue; 1172 continue;
1176 } 1173 }
1177 CXFA_Node* pXFAChild = m_pFactory->CreateNode(XFA_XDPPACKET_Datasets, 1174 CXFA_Node* pXFAChild = m_pFactory->CreateNode(XFA_XDPPACKET_Datasets,
1178 XFA_ELEMENT_DataValue); 1175 XFA_ELEMENT_DataValue);
1179 if (pXFAChild == NULL) { 1176 if (pXFAChild == NULL) {
1180 return; 1177 return;
1181 } 1178 }
1182 pXFAChild->SetCData(XFA_ATTRIBUTE_Value, wsCharData); 1179 pXFAChild->SetCData(XFA_ATTRIBUTE_Value, wsCharData);
1183 pXFANode->InsertChild(pXFAChild); 1180 pXFANode->InsertChild(pXFAChild);
1184 pXFAChild->SetXMLMappingNode(pXMLCharData); 1181 pXFAChild->SetXMLMappingNode(pXMLCharData);
1185 pXFAChild->SetFlag(XFA_NODEFLAG_Initialized, TRUE, FALSE); 1182 pXFAChild->SetFlag(XFA_NODEFLAG_Initialized, TRUE, FALSE);
1186 } 1183 }
1187 continue; 1184 continue;
1188 case FDE_XMLNODE_Text: { 1185 case FDE_XMLNODE_Text: {
1189 IFDE_XMLText* pXMLText = (IFDE_XMLText*)pXMLChild; 1186 CFDE_XMLText* pXMLText = static_cast<CFDE_XMLText*>(pXMLChild);
1190 CFX_WideString wsText; 1187 CFX_WideString wsText;
1191 pXMLText->GetText(wsText); 1188 pXMLText->GetText(wsText);
1192 if (XFA_FDEExtension_IsStringAllWhitespace(wsText)) { 1189 if (XFA_FDEExtension_IsStringAllWhitespace(wsText)) {
1193 continue; 1190 continue;
1194 } 1191 }
1195 CXFA_Node* pXFAChild = m_pFactory->CreateNode(XFA_XDPPACKET_Datasets, 1192 CXFA_Node* pXFAChild = m_pFactory->CreateNode(XFA_XDPPACKET_Datasets,
1196 XFA_ELEMENT_DataValue); 1193 XFA_ELEMENT_DataValue);
1197 if (pXFAChild == NULL) { 1194 if (pXFAChild == NULL) {
1198 return; 1195 return;
1199 } 1196 }
1200 pXFAChild->SetCData(XFA_ATTRIBUTE_Value, wsText); 1197 pXFAChild->SetCData(XFA_ATTRIBUTE_Value, wsText);
1201 pXFANode->InsertChild(pXFAChild); 1198 pXFANode->InsertChild(pXFAChild);
1202 pXFAChild->SetXMLMappingNode(pXMLText); 1199 pXFAChild->SetXMLMappingNode(pXMLText);
1203 pXFAChild->SetFlag(XFA_NODEFLAG_Initialized, TRUE, FALSE); 1200 pXFAChild->SetFlag(XFA_NODEFLAG_Initialized, TRUE, FALSE);
1204 } 1201 }
1205 continue; 1202 continue;
1206 case FDE_XMLNODE_Instruction: 1203 case FDE_XMLNODE_Instruction:
1207 continue; 1204 continue;
1208 default: 1205 default:
1209 continue; 1206 continue;
1210 } 1207 }
1211 } 1208 }
1212 } 1209 }
1213 1210
1214 void CXFA_SimpleParser::ParseDataValue(CXFA_Node* pXFANode, 1211 void CXFA_SimpleParser::ParseDataValue(CXFA_Node* pXFANode,
1215 IFDE_XMLNode* pXMLNode, 1212 CFDE_XMLNode* pXMLNode,
1216 XFA_XDPPACKET ePacketID) { 1213 XFA_XDPPACKET ePacketID) {
1217 CFX_WideTextBuf wsValueTextBuf; 1214 CFX_WideTextBuf wsValueTextBuf;
1218 CFX_WideTextBuf wsCurValueTextBuf; 1215 CFX_WideTextBuf wsCurValueTextBuf;
1219 FX_BOOL bMarkAsCompound = FALSE; 1216 FX_BOOL bMarkAsCompound = FALSE;
1220 IFDE_XMLNode* pXMLCurValueNode = nullptr; 1217 CFDE_XMLNode* pXMLCurValueNode = nullptr;
1221 for (IFDE_XMLNode* pXMLChild = 1218 for (CFDE_XMLNode* pXMLChild =
1222 pXMLNode->GetNodeItem(IFDE_XMLNode::FirstChild); 1219 pXMLNode->GetNodeItem(CFDE_XMLNode::FirstChild);
1223 pXMLChild; 1220 pXMLChild;
1224 pXMLChild = pXMLChild->GetNodeItem(IFDE_XMLNode::NextSibling)) { 1221 pXMLChild = pXMLChild->GetNodeItem(CFDE_XMLNode::NextSibling)) {
1225 FDE_XMLNODETYPE eNodeType = pXMLChild->GetType(); 1222 FDE_XMLNODETYPE eNodeType = pXMLChild->GetType();
1226 if (eNodeType == FDE_XMLNODE_Instruction) 1223 if (eNodeType == FDE_XMLNODE_Instruction)
1227 continue; 1224 continue;
1228 1225
1229 CFX_WideString wsText; 1226 CFX_WideString wsText;
1230 if (eNodeType == FDE_XMLNODE_Text) { 1227 if (eNodeType == FDE_XMLNODE_Text) {
1231 ((IFDE_XMLText*)pXMLChild)->GetText(wsText); 1228 static_cast<CFDE_XMLText*>(pXMLChild)->GetText(wsText);
1232 if (!pXMLCurValueNode) 1229 if (!pXMLCurValueNode)
1233 pXMLCurValueNode = pXMLChild; 1230 pXMLCurValueNode = pXMLChild;
1234 1231
1235 wsCurValueTextBuf << wsText; 1232 wsCurValueTextBuf << wsText;
1236 } else if (eNodeType == FDE_XMLNODE_CharData) { 1233 } else if (eNodeType == FDE_XMLNODE_CharData) {
1237 ((IFDE_XMLCharData*)pXMLChild)->GetCharData(wsText); 1234 static_cast<CFDE_XMLCharData*>(pXMLChild)->GetCharData(wsText);
1238 if (!pXMLCurValueNode) 1235 if (!pXMLCurValueNode)
1239 pXMLCurValueNode = pXMLChild; 1236 pXMLCurValueNode = pXMLChild;
1240 1237
1241 wsCurValueTextBuf << wsText; 1238 wsCurValueTextBuf << wsText;
1242 } else if (XFA_RecognizeRichText((IFDE_XMLElement*)pXMLChild)) { 1239 } else if (XFA_RecognizeRichText(
1243 XFA_GetPlainTextFromRichText((IFDE_XMLElement*)pXMLChild, wsText); 1240 static_cast<CFDE_XMLElement*>(pXMLChild))) {
1241 XFA_GetPlainTextFromRichText(static_cast<CFDE_XMLElement*>(pXMLChild),
1242 wsText);
1244 if (!pXMLCurValueNode) 1243 if (!pXMLCurValueNode)
1245 pXMLCurValueNode = pXMLChild; 1244 pXMLCurValueNode = pXMLChild;
1246 1245
1247 wsCurValueTextBuf << wsText; 1246 wsCurValueTextBuf << wsText;
1248 } else { 1247 } else {
1249 bMarkAsCompound = TRUE; 1248 bMarkAsCompound = TRUE;
1250 if (pXMLCurValueNode) { 1249 if (pXMLCurValueNode) {
1251 CFX_WideStringC wsCurValue = wsCurValueTextBuf.GetWideString(); 1250 CFX_WideStringC wsCurValue = wsCurValueTextBuf.GetWideString();
1252 if (!wsCurValue.IsEmpty()) { 1251 if (!wsCurValue.IsEmpty()) {
1253 CXFA_Node* pXFAChild = 1252 CXFA_Node* pXFAChild =
(...skipping 10 matching lines...) Expand all
1264 wsCurValueTextBuf.Clear(); 1263 wsCurValueTextBuf.Clear();
1265 } 1264 }
1266 pXMLCurValueNode = nullptr; 1265 pXMLCurValueNode = nullptr;
1267 } 1266 }
1268 CXFA_Node* pXFAChild = 1267 CXFA_Node* pXFAChild =
1269 m_pFactory->CreateNode(ePacketID, XFA_ELEMENT_DataValue); 1268 m_pFactory->CreateNode(ePacketID, XFA_ELEMENT_DataValue);
1270 if (!pXFAChild) 1269 if (!pXFAChild)
1271 return; 1270 return;
1272 1271
1273 CFX_WideString wsNodeStr; 1272 CFX_WideString wsNodeStr;
1274 ((IFDE_XMLElement*)pXMLChild)->GetLocalTagName(wsNodeStr); 1273 static_cast<CFDE_XMLElement*>(pXMLChild)->GetLocalTagName(wsNodeStr);
1275 pXFAChild->SetCData(XFA_ATTRIBUTE_Name, wsNodeStr); 1274 pXFAChild->SetCData(XFA_ATTRIBUTE_Name, wsNodeStr);
1276 ParseDataValue(pXFAChild, pXMLChild, ePacketID); 1275 ParseDataValue(pXFAChild, pXMLChild, ePacketID);
1277 pXFANode->InsertChild(pXFAChild); 1276 pXFANode->InsertChild(pXFAChild);
1278 pXFAChild->SetXMLMappingNode(pXMLChild); 1277 pXFAChild->SetXMLMappingNode(pXMLChild);
1279 pXFAChild->SetFlag(XFA_NODEFLAG_Initialized, TRUE, FALSE); 1278 pXFAChild->SetFlag(XFA_NODEFLAG_Initialized, TRUE, FALSE);
1280 CFX_WideStringC wsCurValue = pXFAChild->GetCData(XFA_ATTRIBUTE_Value); 1279 CFX_WideStringC wsCurValue = pXFAChild->GetCData(XFA_ATTRIBUTE_Value);
1281 wsValueTextBuf << wsCurValue; 1280 wsValueTextBuf << wsCurValue;
1282 } 1281 }
1283 } 1282 }
1284 if (pXMLCurValueNode) { 1283 if (pXMLCurValueNode) {
(...skipping 14 matching lines...) Expand all
1299 wsValueTextBuf << wsCurValue; 1298 wsValueTextBuf << wsCurValue;
1300 wsCurValueTextBuf.Clear(); 1299 wsCurValueTextBuf.Clear();
1301 } 1300 }
1302 pXMLCurValueNode = nullptr; 1301 pXMLCurValueNode = nullptr;
1303 } 1302 }
1304 CFX_WideStringC wsNodeValue = wsValueTextBuf.GetWideString(); 1303 CFX_WideStringC wsNodeValue = wsValueTextBuf.GetWideString();
1305 pXFANode->SetCData(XFA_ATTRIBUTE_Value, wsNodeValue); 1304 pXFANode->SetCData(XFA_ATTRIBUTE_Value, wsNodeValue);
1306 } 1305 }
1307 1306
1308 void CXFA_SimpleParser::ParseInstruction(CXFA_Node* pXFANode, 1307 void CXFA_SimpleParser::ParseInstruction(CXFA_Node* pXFANode,
1309 IFDE_XMLInstruction* pXMLInstruction, 1308 CFDE_XMLInstruction* pXMLInstruction,
1310 XFA_XDPPACKET ePacketID) { 1309 XFA_XDPPACKET ePacketID) {
1311 if (!m_bDocumentParser) { 1310 if (!m_bDocumentParser) {
1312 return; 1311 return;
1313 } 1312 }
1314 CFX_WideString wsTargetName; 1313 CFX_WideString wsTargetName;
1315 pXMLInstruction->GetTargetName(wsTargetName); 1314 pXMLInstruction->GetTargetName(wsTargetName);
1316 if (wsTargetName == FX_WSTRC(L"originalXFAVersion")) { 1315 if (wsTargetName == FX_WSTRC(L"originalXFAVersion")) {
1317 CFX_WideString wsData; 1316 CFX_WideString wsData;
1318 if (pXMLInstruction->GetData(0, wsData) && 1317 if (pXMLInstruction->GetData(0, wsData) &&
1319 (pXFANode->GetDocument()->RecognizeXFAVersionNumber(wsData) != 1318 (pXFANode->GetDocument()->RecognizeXFAVersionNumber(wsData) !=
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
1365 } 1364 }
1366 int32_t CXFA_DocumentParser::DoParse(IFX_Pause* pPause) { 1365 int32_t CXFA_DocumentParser::DoParse(IFX_Pause* pPause) {
1367 int32_t nRetStatus = m_nodeParser.DoParse(pPause); 1366 int32_t nRetStatus = m_nodeParser.DoParse(pPause);
1368 if (nRetStatus >= XFA_PARSESTATUS_Done) { 1367 if (nRetStatus >= XFA_PARSESTATUS_Done) {
1369 FXSYS_assert(m_pDocument); 1368 FXSYS_assert(m_pDocument);
1370 m_pDocument->SetRoot(m_nodeParser.GetRootNode()); 1369 m_pDocument->SetRoot(m_nodeParser.GetRootNode());
1371 } 1370 }
1372 return nRetStatus; 1371 return nRetStatus;
1373 } 1372 }
1374 int32_t CXFA_DocumentParser::ParseXMLData(const CFX_WideString& wsXML, 1373 int32_t CXFA_DocumentParser::ParseXMLData(const CFX_WideString& wsXML,
1375 IFDE_XMLNode*& pXMLNode, 1374 CFDE_XMLNode*& pXMLNode,
1376 IFX_Pause* pPause) { 1375 IFX_Pause* pPause) {
1377 CloseParser(); 1376 CloseParser();
1378 int32_t nRetStatus = m_nodeParser.ParseXMLData(wsXML, pXMLNode, NULL); 1377 int32_t nRetStatus = m_nodeParser.ParseXMLData(wsXML, pXMLNode, NULL);
1379 if (nRetStatus == XFA_PARSESTATUS_Done && pXMLNode) { 1378 if (nRetStatus == XFA_PARSESTATUS_Done && pXMLNode) {
1380 m_pDocument = new CXFA_Document(this); 1379 m_pDocument = new CXFA_Document(this);
1381 m_nodeParser.SetFactory(m_pDocument); 1380 m_nodeParser.SetFactory(m_pDocument);
1382 } 1381 }
1383 return nRetStatus; 1382 return nRetStatus;
1384 } 1383 }
1385 void CXFA_DocumentParser::ConstructXFANode(CXFA_Node* pXFANode, 1384 void CXFA_DocumentParser::ConstructXFANode(CXFA_Node* pXFANode,
1386 IFDE_XMLNode* pXMLNode) { 1385 CFDE_XMLNode* pXMLNode) {
1387 if (!pXFANode || !pXMLNode) { 1386 if (!pXFANode || !pXMLNode) {
1388 return; 1387 return;
1389 } 1388 }
1390 m_nodeParser.ConstructXFANode(pXFANode, pXMLNode); 1389 m_nodeParser.ConstructXFANode(pXFANode, pXMLNode);
1391 CXFA_Node* pRootNode = m_nodeParser.GetRootNode(); 1390 CXFA_Node* pRootNode = m_nodeParser.GetRootNode();
1392 if (m_pDocument && pRootNode) { 1391 if (m_pDocument && pRootNode) {
1393 m_pDocument->SetRoot(pRootNode); 1392 m_pDocument->SetRoot(pRootNode);
1394 } 1393 }
1395 } 1394 }
1396 void CXFA_DocumentParser::CloseParser() { 1395 void CXFA_DocumentParser::CloseParser() {
1397 if (m_pDocument) { 1396 if (m_pDocument) {
1398 delete m_pDocument; 1397 delete m_pDocument;
1399 m_pDocument = NULL; 1398 m_pDocument = NULL;
1400 } 1399 }
1401 m_nodeParser.CloseParser(); 1400 m_nodeParser.CloseParser();
1402 } 1401 }
1403 CXFA_XMLParser::CXFA_XMLParser(IFDE_XMLNode* pRoot, IFX_Stream* pStream) 1402 CXFA_XMLParser::CXFA_XMLParser(CFDE_XMLNode* pRoot, IFX_Stream* pStream)
1404 : m_nElementStart(0), 1403 : m_nElementStart(0),
1405 m_dwCheckStatus(0), 1404 m_dwCheckStatus(0),
1406 m_dwCurrentCheckStatus(0), 1405 m_dwCurrentCheckStatus(0),
1407 m_pRoot(pRoot), 1406 m_pRoot(pRoot),
1408 m_pStream(pStream), 1407 m_pStream(pStream),
1409 m_pParser(nullptr), 1408 m_pParser(nullptr),
1410 m_pParent(pRoot), 1409 m_pParent(pRoot),
1411 m_pChild(nullptr), 1410 m_pChild(nullptr),
1412 m_NodeStack(16), 1411 m_NodeStack(16),
1413 m_dwStatus(FDE_XMLSYNTAXSTATUS_None) { 1412 m_dwStatus(FDE_XMLSYNTAXSTATUS_None) {
1414 ASSERT(m_pParent && m_pStream); 1413 ASSERT(m_pParent && m_pStream);
1415 m_NodeStack.Push(m_pParent); 1414 m_NodeStack.Push(m_pParent);
1416 m_pParser = IFDE_XMLSyntaxParser::Create(); 1415 m_pParser = new CFDE_XMLSyntaxParser;
1417 m_pParser->Init(m_pStream, 32 * 1024, 1024 * 1024); 1416 m_pParser->Init(m_pStream, 32 * 1024, 1024 * 1024);
1418 } 1417 }
1419 CXFA_XMLParser::~CXFA_XMLParser() { 1418 CXFA_XMLParser::~CXFA_XMLParser() {
1420 if (m_pParser) { 1419 if (m_pParser) {
1421 m_pParser->Release(); 1420 m_pParser->Release();
1422 } 1421 }
1423 m_NodeStack.RemoveAll(); 1422 m_NodeStack.RemoveAll();
1424 m_ws1.Empty(); 1423 m_ws1.Empty();
1425 m_ws2.Empty(); 1424 m_ws2.Empty();
1426 } 1425 }
(...skipping 25 matching lines...) Expand all
1452 } 1451 }
1453 break; 1452 break;
1454 case FDE_XMLSYNTAXSTATUS_ElementBreak: 1453 case FDE_XMLSYNTAXSTATUS_ElementBreak:
1455 break; 1454 break;
1456 case FDE_XMLSYNTAXSTATUS_ElementClose: 1455 case FDE_XMLSYNTAXSTATUS_ElementClose:
1457 if (m_pChild->GetType() != FDE_XMLNODE_Element) { 1456 if (m_pChild->GetType() != FDE_XMLNODE_Element) {
1458 m_dwStatus = FDE_XMLSYNTAXSTATUS_Error; 1457 m_dwStatus = FDE_XMLSYNTAXSTATUS_Error;
1459 break; 1458 break;
1460 } 1459 }
1461 m_pParser->GetTagName(m_ws1); 1460 m_pParser->GetTagName(m_ws1);
1462 ((IFDE_XMLElement*)m_pChild)->GetTagName(m_ws2); 1461 static_cast<CFDE_XMLElement*>(m_pChild)->GetTagName(m_ws2);
1463 if (m_ws1.GetLength() > 0 && !m_ws1.Equal(m_ws2)) { 1462 if (m_ws1.GetLength() > 0 && !m_ws1.Equal(m_ws2)) {
1464 m_dwStatus = FDE_XMLSYNTAXSTATUS_Error; 1463 m_dwStatus = FDE_XMLSYNTAXSTATUS_Error;
1465 break; 1464 break;
1466 } 1465 }
1467 m_NodeStack.Pop(); 1466 m_NodeStack.Pop();
1468 if (m_NodeStack.GetSize() < 1) { 1467 if (m_NodeStack.GetSize() < 1) {
1469 m_dwStatus = FDE_XMLSYNTAXSTATUS_Error; 1468 m_dwStatus = FDE_XMLSYNTAXSTATUS_Error;
1470 break; 1469 break;
1471 } else if (m_dwCurrentCheckStatus != 0 && m_NodeStack.GetSize() == 2) { 1470 } else if (m_dwCurrentCheckStatus != 0 && m_NodeStack.GetSize() == 2) {
1472 m_nSize[m_dwCurrentCheckStatus - 1] = 1471 m_nSize[m_dwCurrentCheckStatus - 1] =
1473 m_pParser->GetCurrentBinaryPos() - 1472 m_pParser->GetCurrentBinaryPos() -
1474 m_nStart[m_dwCurrentCheckStatus - 1]; 1473 m_nStart[m_dwCurrentCheckStatus - 1];
1475 m_dwCurrentCheckStatus = 0; 1474 m_dwCurrentCheckStatus = 0;
1476 } 1475 }
1477 1476
1478 m_pParent = (IFDE_XMLNode*)*m_NodeStack.GetTopElement(); 1477 m_pParent = static_cast<CFDE_XMLNode*>(*m_NodeStack.GetTopElement());
1479 m_pChild = m_pParent; 1478 m_pChild = m_pParent;
1480 iCount++; 1479 iCount++;
1481 break; 1480 break;
1482 case FDE_XMLSYNTAXSTATUS_TargetName: 1481 case FDE_XMLSYNTAXSTATUS_TargetName:
1483 m_pParser->GetTargetName(m_ws1); 1482 m_pParser->GetTargetName(m_ws1);
1484 if (m_ws1 == FX_WSTRC(L"originalXFAVersion") || 1483 if (m_ws1 == FX_WSTRC(L"originalXFAVersion") ||
1485 m_ws1 == FX_WSTRC(L"acrobat")) { 1484 m_ws1 == FX_WSTRC(L"acrobat")) {
1486 m_pChild = IFDE_XMLInstruction::Create(m_ws1); 1485 m_pChild = new CFDE_XMLInstruction(m_ws1);
1487 m_pParent->InsertChildNode(m_pChild); 1486 m_pParent->InsertChildNode(m_pChild);
1488 } else { 1487 } else {
1489 m_pChild = NULL; 1488 m_pChild = NULL;
1490 } 1489 }
1491 m_ws1.Empty(); 1490 m_ws1.Empty();
1492 break; 1491 break;
1493 case FDE_XMLSYNTAXSTATUS_TagName: 1492 case FDE_XMLSYNTAXSTATUS_TagName:
1494 m_pParser->GetTagName(m_ws1); 1493 m_pParser->GetTagName(m_ws1);
1495 m_pChild = IFDE_XMLElement::Create(m_ws1); 1494 m_pChild = new CFDE_XMLElement(m_ws1);
1496 m_pParent->InsertChildNode(m_pChild); 1495 m_pParent->InsertChildNode(m_pChild);
1497 m_NodeStack.Push(m_pChild); 1496 m_NodeStack.Push(m_pChild);
1498 m_pParent = m_pChild; 1497 m_pParent = m_pChild;
1499 1498
1500 if (m_dwCheckStatus != 0x03 && m_NodeStack.GetSize() == 3) { 1499 if (m_dwCheckStatus != 0x03 && m_NodeStack.GetSize() == 3) {
1501 CFX_WideString wsTag; 1500 CFX_WideString wsTag;
1502 ((IFDE_XMLElement*)m_pChild)->GetLocalTagName(wsTag); 1501 static_cast<CFDE_XMLElement*>(m_pChild)->GetLocalTagName(wsTag);
1503 if (wsTag == FX_WSTRC(L"template")) { 1502 if (wsTag == FX_WSTRC(L"template")) {
1504 m_dwCheckStatus |= 0x01; 1503 m_dwCheckStatus |= 0x01;
1505 m_dwCurrentCheckStatus = 0x01; 1504 m_dwCurrentCheckStatus = 0x01;
1506 m_nStart[0] = m_pParser->GetCurrentBinaryPos() - 1505 m_nStart[0] = m_pParser->GetCurrentBinaryPos() -
1507 (m_pParser->GetCurrentPos() - m_nElementStart); 1506 (m_pParser->GetCurrentPos() - m_nElementStart);
1508 } else if (wsTag == FX_WSTRC(L"datasets")) { 1507 } else if (wsTag == FX_WSTRC(L"datasets")) {
1509 m_dwCheckStatus |= 0x02; 1508 m_dwCheckStatus |= 0x02;
1510 m_dwCurrentCheckStatus = 0x02; 1509 m_dwCurrentCheckStatus = 0x02;
1511 m_nStart[1] = m_pParser->GetCurrentBinaryPos() - 1510 m_nStart[1] = m_pParser->GetCurrentBinaryPos() -
1512 (m_pParser->GetCurrentPos() - m_nElementStart); 1511 (m_pParser->GetCurrentPos() - m_nElementStart);
1513 } 1512 }
1514 } 1513 }
1515 break; 1514 break;
1516 case FDE_XMLSYNTAXSTATUS_AttriName: 1515 case FDE_XMLSYNTAXSTATUS_AttriName:
1517 m_pParser->GetAttributeName(m_ws1); 1516 m_pParser->GetAttributeName(m_ws1);
1518 break; 1517 break;
1519 case FDE_XMLSYNTAXSTATUS_AttriValue: 1518 case FDE_XMLSYNTAXSTATUS_AttriValue:
1520 if (m_pChild) { 1519 if (m_pChild) {
1521 m_pParser->GetAttributeName(m_ws2); 1520 m_pParser->GetAttributeName(m_ws2);
1522 if (m_pChild->GetType() == FDE_XMLNODE_Element) { 1521 if (m_pChild->GetType() == FDE_XMLNODE_Element) {
1523 ((IFDE_XMLElement*)m_pChild)->SetString(m_ws1, m_ws2); 1522 static_cast<CFDE_XMLElement*>(m_pChild)->SetString(m_ws1, m_ws2);
1524 } 1523 }
1525 } 1524 }
1526 m_ws1.Empty(); 1525 m_ws1.Empty();
1527 break; 1526 break;
1528 case FDE_XMLSYNTAXSTATUS_Text: 1527 case FDE_XMLSYNTAXSTATUS_Text:
1529 m_pParser->GetTextData(m_ws1); 1528 m_pParser->GetTextData(m_ws1);
1530 m_pChild = IFDE_XMLText::Create(m_ws1); 1529 m_pChild = new CFDE_XMLText(m_ws1);
1531 m_pParent->InsertChildNode(m_pChild); 1530 m_pParent->InsertChildNode(m_pChild);
1532 m_pChild = m_pParent; 1531 m_pChild = m_pParent;
1533 break; 1532 break;
1534 case FDE_XMLSYNTAXSTATUS_CData: 1533 case FDE_XMLSYNTAXSTATUS_CData:
1535 m_pParser->GetTextData(m_ws1); 1534 m_pParser->GetTextData(m_ws1);
1536 m_pChild = IFDE_XMLCharData::Create(m_ws1); 1535 m_pChild = new CFDE_XMLCharData(m_ws1);
1537 m_pParent->InsertChildNode(m_pChild); 1536 m_pParent->InsertChildNode(m_pChild);
1538 m_pChild = m_pParent; 1537 m_pChild = m_pParent;
1539 break; 1538 break;
1540 case FDE_XMLSYNTAXSTATUS_TargetData: 1539 case FDE_XMLSYNTAXSTATUS_TargetData:
1541 if (m_pChild) { 1540 if (m_pChild) {
1542 if (m_pChild->GetType() != FDE_XMLNODE_Instruction) { 1541 if (m_pChild->GetType() != FDE_XMLNODE_Instruction) {
1543 m_dwStatus = FDE_XMLSYNTAXSTATUS_Error; 1542 m_dwStatus = FDE_XMLSYNTAXSTATUS_Error;
1544 break; 1543 break;
1545 } 1544 }
1546 if (!m_ws1.IsEmpty()) { 1545 if (!m_ws1.IsEmpty()) {
1547 ((IFDE_XMLInstruction*)m_pChild)->AppendData(m_ws1); 1546 static_cast<CFDE_XMLInstruction*>(m_pChild)->AppendData(m_ws1);
1548 } 1547 }
1549 m_pParser->GetTargetData(m_ws1); 1548 m_pParser->GetTargetData(m_ws1);
1550 ((IFDE_XMLInstruction*)m_pChild)->AppendData(m_ws1); 1549 static_cast<CFDE_XMLInstruction*>(m_pChild)->AppendData(m_ws1);
1551 } 1550 }
1552 m_ws1.Empty(); 1551 m_ws1.Empty();
1553 break; 1552 break;
1554 default: 1553 default:
1555 break; 1554 break;
1556 } 1555 }
1557 if (m_dwStatus == FDE_XMLSYNTAXSTATUS_Error || 1556 if (m_dwStatus == FDE_XMLSYNTAXSTATUS_Error ||
1558 m_dwStatus == FDE_XMLSYNTAXSTATUS_EOS) { 1557 m_dwStatus == FDE_XMLSYNTAXSTATUS_EOS) {
1559 break; 1558 break;
1560 } 1559 }
1561 if (pPause && iCount > 500 && pPause->NeedToPauseNow()) { 1560 if (pPause && iCount > 500 && pPause->NeedToPauseNow()) {
1562 break; 1561 break;
1563 } 1562 }
1564 } 1563 }
1565 return (m_dwStatus == FDE_XMLSYNTAXSTATUS_Error || m_NodeStack.GetSize() != 1) 1564 return (m_dwStatus == FDE_XMLSYNTAXSTATUS_Error || m_NodeStack.GetSize() != 1)
1566 ? -1 1565 ? -1
1567 : m_pParser->GetStatus(); 1566 : m_pParser->GetStatus();
1568 } 1567 }
OLDNEW
« no previous file with comments | « xfa/fxfa/parser/xfa_parser_imp.h ('k') | xfa/fxfa/parser/xfa_utils.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698