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

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

Issue 2082573007: Update GetClassID to GetElementType (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@remove_script_obj_hash
Patch Set: Created 4 years, 6 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
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_document_serialize.h" 7 #include "xfa/fxfa/parser/xfa_document_serialize.h"
8 8
9 #include "xfa/fde/xml/fde_xml_imp.h" 9 #include "xfa/fde/xml/fde_xml_imp.h"
10 #include "xfa/fgas/crt/fgas_codepage.h" 10 #include "xfa/fgas/crt/fgas_codepage.h"
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
43 CXFA_Node* pDataModel = 43 CXFA_Node* pDataModel =
44 ToNode(m_pDocument->GetXFAObject(XFA_HASHCODE_Datasets)); 44 ToNode(m_pDocument->GetXFAObject(XFA_HASHCODE_Datasets));
45 if (!pDataModel) { 45 if (!pDataModel) {
46 pDataDocumentParser->Release(); 46 pDataDocumentParser->Release();
47 return FALSE; 47 return FALSE;
48 } 48 }
49 CXFA_Node* pDataNode = ToNode(m_pDocument->GetXFAObject(XFA_HASHCODE_Data)); 49 CXFA_Node* pDataNode = ToNode(m_pDocument->GetXFAObject(XFA_HASHCODE_Data));
50 if (pDataNode) { 50 if (pDataNode) {
51 pDataModel->RemoveChild(pDataNode); 51 pDataModel->RemoveChild(pDataNode);
52 } 52 }
53 if (pImportDataRoot->GetClassID() == XFA_Element::DataModel) { 53 if (pImportDataRoot->GetElementType() == XFA_Element::DataModel) {
54 while (CXFA_Node* pChildNode = 54 while (CXFA_Node* pChildNode =
55 pImportDataRoot->GetNodeItem(XFA_NODEITEM_FirstChild)) { 55 pImportDataRoot->GetNodeItem(XFA_NODEITEM_FirstChild)) {
56 pImportDataRoot->RemoveChild(pChildNode); 56 pImportDataRoot->RemoveChild(pChildNode);
57 pDataModel->InsertChild(pChildNode); 57 pDataModel->InsertChild(pChildNode);
58 } 58 }
59 } else { 59 } else {
60 CFDE_XMLNode* pXMLNode = pImportDataRoot->GetXMLMappingNode(); 60 CFDE_XMLNode* pXMLNode = pImportDataRoot->GetXMLMappingNode();
61 CFDE_XMLNode* pParentXMLNode = pXMLNode->GetNodeItem(CFDE_XMLNode::Parent); 61 CFDE_XMLNode* pParentXMLNode = pXMLNode->GetNodeItem(CFDE_XMLNode::Parent);
62 if (pParentXMLNode) { 62 if (pParentXMLNode) {
63 pParentXMLNode->RemoveChildNode(pXMLNode); 63 pParentXMLNode->RemoveChildNode(pXMLNode);
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
138 wsOutput += FX_WSTRC(L" "); 138 wsOutput += FX_WSTRC(L" ");
139 wsOutput += wsName; 139 wsOutput += wsName;
140 wsOutput += FX_WSTRC(L"=\""); 140 wsOutput += FX_WSTRC(L"=\"");
141 wsOutput += wsValue; 141 wsOutput += wsValue;
142 wsOutput += FX_WSTRC(L"\""); 142 wsOutput += FX_WSTRC(L"\"");
143 } 143 }
144 static FX_BOOL XFA_DataExporter_AttributeSaveInDataModel( 144 static FX_BOOL XFA_DataExporter_AttributeSaveInDataModel(
145 CXFA_Node* pNode, 145 CXFA_Node* pNode,
146 XFA_ATTRIBUTE eAttribute) { 146 XFA_ATTRIBUTE eAttribute) {
147 FX_BOOL bSaveInDataModel = FALSE; 147 FX_BOOL bSaveInDataModel = FALSE;
148 if (pNode->GetClassID() != XFA_Element::Image) { 148 if (pNode->GetElementType() != XFA_Element::Image) {
149 return bSaveInDataModel; 149 return bSaveInDataModel;
150 } 150 }
151 CXFA_Node* pValueNode = pNode->GetNodeItem(XFA_NODEITEM_Parent); 151 CXFA_Node* pValueNode = pNode->GetNodeItem(XFA_NODEITEM_Parent);
152 if (!pValueNode || pValueNode->GetClassID() != XFA_Element::Value) { 152 if (!pValueNode || pValueNode->GetElementType() != XFA_Element::Value) {
153 return bSaveInDataModel; 153 return bSaveInDataModel;
154 } 154 }
155 CXFA_Node* pFieldNode = pValueNode->GetNodeItem(XFA_NODEITEM_Parent); 155 CXFA_Node* pFieldNode = pValueNode->GetNodeItem(XFA_NODEITEM_Parent);
156 if (pFieldNode && pFieldNode->GetBindData() && 156 if (pFieldNode && pFieldNode->GetBindData() &&
157 eAttribute == XFA_ATTRIBUTE_Href) { 157 eAttribute == XFA_ATTRIBUTE_Href) {
158 bSaveInDataModel = TRUE; 158 bSaveInDataModel = TRUE;
159 } 159 }
160 return bSaveInDataModel; 160 return bSaveInDataModel;
161 } 161 }
162 FX_BOOL XFA_DataExporter_ContentNodeNeedtoExport(CXFA_Node* pContentNode) { 162 FX_BOOL XFA_DataExporter_ContentNodeNeedtoExport(CXFA_Node* pContentNode) {
163 CFX_WideString wsContent; 163 CFX_WideString wsContent;
164 if (!pContentNode->TryContent(wsContent, FALSE, FALSE)) 164 if (!pContentNode->TryContent(wsContent, FALSE, FALSE))
165 return FALSE; 165 return FALSE;
166 166
167 ASSERT(pContentNode->IsContentNode()); 167 ASSERT(pContentNode->IsContentNode());
168 CXFA_Node* pParentNode = pContentNode->GetNodeItem(XFA_NODEITEM_Parent); 168 CXFA_Node* pParentNode = pContentNode->GetNodeItem(XFA_NODEITEM_Parent);
169 if (!pParentNode || pParentNode->GetClassID() != XFA_Element::Value) 169 if (!pParentNode || pParentNode->GetElementType() != XFA_Element::Value)
170 return TRUE; 170 return TRUE;
171 171
172 CXFA_Node* pGrandParentNode = pParentNode->GetNodeItem(XFA_NODEITEM_Parent); 172 CXFA_Node* pGrandParentNode = pParentNode->GetNodeItem(XFA_NODEITEM_Parent);
173 if (!pGrandParentNode || !pGrandParentNode->IsContainerNode()) 173 if (!pGrandParentNode || !pGrandParentNode->IsContainerNode())
174 return TRUE; 174 return TRUE;
175 if (pGrandParentNode->GetBindData()) 175 if (pGrandParentNode->GetBindData())
176 return FALSE; 176 return FALSE;
177 177
178 CXFA_WidgetData* pWidgetData = pGrandParentNode->GetWidgetData(); 178 CXFA_WidgetData* pWidgetData = pGrandParentNode->GetWidgetData();
179 XFA_Element eUIType = pWidgetData->GetUIType(); 179 XFA_Element eUIType = pWidgetData->GetUIType();
(...skipping 19 matching lines...) Expand all
199 eVersion = XFA_VERSION_DEFAULT; 199 eVersion = XFA_VERSION_DEFAULT;
200 } 200 }
201 wsVersionNumber.Format(L"%i.%i", eVersion / 100, eVersion % 100); 201 wsVersionNumber.Format(L"%i.%i", eVersion / 100, eVersion % 100);
202 } 202 }
203 static void XFA_DataExporter_RegenerateFormFile_Changed( 203 static void XFA_DataExporter_RegenerateFormFile_Changed(
204 CXFA_Node* pNode, 204 CXFA_Node* pNode,
205 CFX_WideTextBuf& buf, 205 CFX_WideTextBuf& buf,
206 FX_BOOL bSaveXML = FALSE) { 206 FX_BOOL bSaveXML = FALSE) {
207 CFX_WideString wsAttrs; 207 CFX_WideString wsAttrs;
208 int32_t iAttrs = 0; 208 int32_t iAttrs = 0;
209 const uint8_t* pAttrs = XFA_GetElementAttributes(pNode->GetClassID(), iAttrs); 209 const uint8_t* pAttrs =
210 XFA_GetElementAttributes(pNode->GetElementType(), iAttrs);
210 while (iAttrs--) { 211 while (iAttrs--) {
211 const XFA_ATTRIBUTEINFO* pAttr = 212 const XFA_ATTRIBUTEINFO* pAttr =
212 XFA_GetAttributeByID((XFA_ATTRIBUTE)pAttrs[iAttrs]); 213 XFA_GetAttributeByID((XFA_ATTRIBUTE)pAttrs[iAttrs]);
213 if (pAttr->eName == XFA_ATTRIBUTE_Name || 214 if (pAttr->eName == XFA_ATTRIBUTE_Name ||
214 (XFA_DataExporter_AttributeSaveInDataModel(pNode, pAttr->eName) && 215 (XFA_DataExporter_AttributeSaveInDataModel(pNode, pAttr->eName) &&
215 !bSaveXML)) { 216 !bSaveXML)) {
216 continue; 217 continue;
217 } 218 }
218 CFX_WideString wsAttr; 219 CFX_WideString wsAttr;
219 XFA_SaveAttribute(pNode, pAttr->eName, pAttr->pName, bSaveXML, wsAttr); 220 XFA_SaveAttribute(pNode, pAttr->eName, pAttr->pName, bSaveXML, wsAttr);
220 wsAttrs += wsAttr; 221 wsAttrs += wsAttr;
221 } 222 }
222 CFX_WideString wsChildren; 223 CFX_WideString wsChildren;
223 switch (pNode->GetObjectType()) { 224 switch (pNode->GetObjectType()) {
224 case XFA_ObjectType::ContentNode: { 225 case XFA_ObjectType::ContentNode: {
225 if (!bSaveXML && !XFA_DataExporter_ContentNodeNeedtoExport(pNode)) { 226 if (!bSaveXML && !XFA_DataExporter_ContentNodeNeedtoExport(pNode)) {
226 break; 227 break;
227 } 228 }
228 CXFA_Node* pRawValueNode = pNode->GetNodeItem(XFA_NODEITEM_FirstChild); 229 CXFA_Node* pRawValueNode = pNode->GetNodeItem(XFA_NODEITEM_FirstChild);
229 while (pRawValueNode && 230 while (pRawValueNode &&
230 pRawValueNode->GetClassID() != XFA_Element::SharpxHTML && 231 pRawValueNode->GetElementType() != XFA_Element::SharpxHTML &&
231 pRawValueNode->GetClassID() != XFA_Element::Sharptext && 232 pRawValueNode->GetElementType() != XFA_Element::Sharptext &&
232 pRawValueNode->GetClassID() != XFA_Element::Sharpxml) { 233 pRawValueNode->GetElementType() != XFA_Element::Sharpxml) {
233 pRawValueNode = pRawValueNode->GetNodeItem(XFA_NODEITEM_NextSibling); 234 pRawValueNode = pRawValueNode->GetNodeItem(XFA_NODEITEM_NextSibling);
234 } 235 }
235 if (!pRawValueNode) { 236 if (!pRawValueNode) {
236 break; 237 break;
237 } 238 }
238 CFX_WideString wsContentType; 239 CFX_WideString wsContentType;
239 pNode->GetAttribute(XFA_ATTRIBUTE_ContentType, wsContentType, FALSE); 240 pNode->GetAttribute(XFA_ATTRIBUTE_ContentType, wsContentType, FALSE);
240 if (pRawValueNode->GetClassID() == XFA_Element::SharpxHTML && 241 if (pRawValueNode->GetElementType() == XFA_Element::SharpxHTML &&
241 wsContentType == FX_WSTRC(L"text/html")) { 242 wsContentType == FX_WSTRC(L"text/html")) {
242 CFDE_XMLNode* pExDataXML = pNode->GetXMLMappingNode(); 243 CFDE_XMLNode* pExDataXML = pNode->GetXMLMappingNode();
243 if (!pExDataXML) { 244 if (!pExDataXML) {
244 break; 245 break;
245 } 246 }
246 CFDE_XMLNode* pRichTextXML = 247 CFDE_XMLNode* pRichTextXML =
247 pExDataXML->GetNodeItem(CFDE_XMLNode::FirstChild); 248 pExDataXML->GetNodeItem(CFDE_XMLNode::FirstChild);
248 if (!pRichTextXML) { 249 if (!pRichTextXML) {
249 break; 250 break;
250 } 251 }
251 IFX_MemoryStream* pMemStream = FX_CreateMemoryStream(TRUE); 252 IFX_MemoryStream* pMemStream = FX_CreateMemoryStream(TRUE);
252 IFX_Stream* pTempStream = IFX_Stream::CreateStream( 253 IFX_Stream* pTempStream = IFX_Stream::CreateStream(
253 (IFX_FileWrite*)pMemStream, FX_STREAMACCESS_Text | 254 (IFX_FileWrite*)pMemStream, FX_STREAMACCESS_Text |
254 FX_STREAMACCESS_Write | 255 FX_STREAMACCESS_Write |
255 FX_STREAMACCESS_Append); 256 FX_STREAMACCESS_Append);
256 pTempStream->SetCodePage(FX_CODEPAGE_UTF8); 257 pTempStream->SetCodePage(FX_CODEPAGE_UTF8);
257 pRichTextXML->SaveXMLNode(pTempStream); 258 pRichTextXML->SaveXMLNode(pTempStream);
258 wsChildren += CFX_WideString::FromUTF8( 259 wsChildren += CFX_WideString::FromUTF8(
259 CFX_ByteStringC(pMemStream->GetBuffer(), pMemStream->GetSize())); 260 CFX_ByteStringC(pMemStream->GetBuffer(), pMemStream->GetSize()));
260 pTempStream->Release(); 261 pTempStream->Release();
261 pMemStream->Release(); 262 pMemStream->Release();
262 } else if (pRawValueNode->GetClassID() == XFA_Element::Sharpxml && 263 } else if (pRawValueNode->GetElementType() == XFA_Element::Sharpxml &&
263 wsContentType == FX_WSTRC(L"text/xml")) { 264 wsContentType == FX_WSTRC(L"text/xml")) {
264 CFX_WideString wsRawValue; 265 CFX_WideString wsRawValue;
265 pRawValueNode->GetAttribute(XFA_ATTRIBUTE_Value, wsRawValue, FALSE); 266 pRawValueNode->GetAttribute(XFA_ATTRIBUTE_Value, wsRawValue, FALSE);
266 if (wsRawValue.IsEmpty()) { 267 if (wsRawValue.IsEmpty()) {
267 break; 268 break;
268 } 269 }
269 CFX_WideStringArray wsSelTextArray; 270 CFX_WideStringArray wsSelTextArray;
270 int32_t iStart = 0; 271 int32_t iStart = 0;
271 int32_t iEnd = wsRawValue.Find(L'\n', iStart); 272 int32_t iEnd = wsRawValue.Find(L'\n', iStart);
272 iEnd = (iEnd == -1) ? wsRawValue.GetLength() : iEnd; 273 iEnd = (iEnd == -1) ? wsRawValue.GetLength() : iEnd;
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
306 wsChildren += XFA_ExportEncodeContent(wsValue); 307 wsChildren += XFA_ExportEncodeContent(wsValue);
307 } 308 }
308 } break; 309 } break;
309 case XFA_ObjectType::TextNode: 310 case XFA_ObjectType::TextNode:
310 case XFA_ObjectType::NodeC: 311 case XFA_ObjectType::NodeC:
311 case XFA_ObjectType::NodeV: { 312 case XFA_ObjectType::NodeV: {
312 CFX_WideStringC wsValue = pNode->GetCData(XFA_ATTRIBUTE_Value); 313 CFX_WideStringC wsValue = pNode->GetCData(XFA_ATTRIBUTE_Value);
313 wsChildren += XFA_ExportEncodeContent(wsValue); 314 wsChildren += XFA_ExportEncodeContent(wsValue);
314 } break; 315 } break;
315 default: 316 default:
316 if (pNode->GetClassID() == XFA_Element::Items) { 317 if (pNode->GetElementType() == XFA_Element::Items) {
317 CXFA_Node* pTemplateNode = pNode->GetTemplateNode(); 318 CXFA_Node* pTemplateNode = pNode->GetTemplateNode();
318 if (!pTemplateNode || 319 if (!pTemplateNode ||
319 pTemplateNode->CountChildren(XFA_Element::Unknown) != 320 pTemplateNode->CountChildren(XFA_Element::Unknown) !=
320 pNode->CountChildren(XFA_Element::Unknown)) { 321 pNode->CountChildren(XFA_Element::Unknown)) {
321 bSaveXML = TRUE; 322 bSaveXML = TRUE;
322 } 323 }
323 } 324 }
324 CFX_WideTextBuf newBuf; 325 CFX_WideTextBuf newBuf;
325 CXFA_Node* pChildNode = pNode->GetNodeItem(XFA_NODEITEM_FirstChild); 326 CXFA_Node* pChildNode = pNode->GetNodeItem(XFA_NODEITEM_FirstChild);
326 while (pChildNode) { 327 while (pChildNode) {
327 XFA_DataExporter_RegenerateFormFile_Changed(pChildNode, newBuf, 328 XFA_DataExporter_RegenerateFormFile_Changed(pChildNode, newBuf,
328 bSaveXML); 329 bSaveXML);
329 wsChildren += newBuf.AsStringC(); 330 wsChildren += newBuf.AsStringC();
330 newBuf.Clear(); 331 newBuf.Clear();
331 pChildNode = pChildNode->GetNodeItem(XFA_NODEITEM_NextSibling); 332 pChildNode = pChildNode->GetNodeItem(XFA_NODEITEM_NextSibling);
332 } 333 }
333 if (!bSaveXML && !wsChildren.IsEmpty() && 334 if (!bSaveXML && !wsChildren.IsEmpty() &&
334 pNode->GetClassID() == XFA_Element::Items) { 335 pNode->GetElementType() == XFA_Element::Items) {
335 wsChildren.clear(); 336 wsChildren.clear();
336 bSaveXML = TRUE; 337 bSaveXML = TRUE;
337 CXFA_Node* pChild = pNode->GetNodeItem(XFA_NODEITEM_FirstChild); 338 CXFA_Node* pChild = pNode->GetNodeItem(XFA_NODEITEM_FirstChild);
338 while (pChild) { 339 while (pChild) {
339 XFA_DataExporter_RegenerateFormFile_Changed(pChild, newBuf, bSaveXML); 340 XFA_DataExporter_RegenerateFormFile_Changed(pChild, newBuf, bSaveXML);
340 wsChildren += newBuf.AsStringC(); 341 wsChildren += newBuf.AsStringC();
341 newBuf.Clear(); 342 newBuf.Clear();
342 pChild = pChild->GetNodeItem(XFA_NODEITEM_NextSibling); 343 pChild = pChild->GetNodeItem(XFA_NODEITEM_NextSibling);
343 } 344 }
344 } 345 }
(...skipping 18 matching lines...) Expand all
363 buf << FX_WSTRC(L"</"); 364 buf << FX_WSTRC(L"</");
364 buf << wsElement; 365 buf << wsElement;
365 buf << FX_WSTRC(L"\n>"); 366 buf << FX_WSTRC(L"\n>");
366 } 367 }
367 } 368 }
368 } 369 }
369 static void XFA_DataExporter_RegenerateFormFile_Container( 370 static void XFA_DataExporter_RegenerateFormFile_Container(
370 CXFA_Node* pNode, 371 CXFA_Node* pNode,
371 IFX_Stream* pStream, 372 IFX_Stream* pStream,
372 FX_BOOL bSaveXML = FALSE) { 373 FX_BOOL bSaveXML = FALSE) {
373 XFA_Element eElement = pNode->GetClassID(); 374 XFA_Element eElement = pNode->GetElementType();
374 if (eElement == XFA_Element::Field || eElement == XFA_Element::Draw || 375 if (eElement == XFA_Element::Field || eElement == XFA_Element::Draw ||
375 !pNode->IsContainerNode()) { 376 !pNode->IsContainerNode()) {
376 CFX_WideTextBuf buf; 377 CFX_WideTextBuf buf;
377 XFA_DataExporter_RegenerateFormFile_Changed(pNode, buf, bSaveXML); 378 XFA_DataExporter_RegenerateFormFile_Changed(pNode, buf, bSaveXML);
378 FX_STRSIZE nLen = buf.GetLength(); 379 FX_STRSIZE nLen = buf.GetLength();
379 if (nLen > 0) { 380 if (nLen > 0) {
380 pStream->WriteString((const FX_WCHAR*)buf.GetBuffer(), nLen); 381 pStream->WriteString((const FX_WCHAR*)buf.GetBuffer(), nLen);
381 } 382 }
382 return; 383 return;
383 } 384 }
384 CFX_WideStringC wsElement; 385 CFX_WideStringC wsElement;
385 pNode->GetClassName(wsElement); 386 pNode->GetClassName(wsElement);
386 pStream->WriteString(L"<", 1); 387 pStream->WriteString(L"<", 1);
387 pStream->WriteString(wsElement.c_str(), wsElement.GetLength()); 388 pStream->WriteString(wsElement.c_str(), wsElement.GetLength());
388 CFX_WideString wsOutput; 389 CFX_WideString wsOutput;
389 XFA_SaveAttribute(pNode, XFA_ATTRIBUTE_Name, FX_WSTRC(L"name"), TRUE, 390 XFA_SaveAttribute(pNode, XFA_ATTRIBUTE_Name, FX_WSTRC(L"name"), TRUE,
390 wsOutput); 391 wsOutput);
391 CFX_WideString wsAttrs; 392 CFX_WideString wsAttrs;
392 int32_t iAttrs = 0; 393 int32_t iAttrs = 0;
393 const uint8_t* pAttrs = XFA_GetElementAttributes(pNode->GetClassID(), iAttrs); 394 const uint8_t* pAttrs =
395 XFA_GetElementAttributes(pNode->GetElementType(), iAttrs);
394 while (iAttrs--) { 396 while (iAttrs--) {
395 const XFA_ATTRIBUTEINFO* pAttr = 397 const XFA_ATTRIBUTEINFO* pAttr =
396 XFA_GetAttributeByID((XFA_ATTRIBUTE)pAttrs[iAttrs]); 398 XFA_GetAttributeByID((XFA_ATTRIBUTE)pAttrs[iAttrs]);
397 if (pAttr->eName == XFA_ATTRIBUTE_Name) { 399 if (pAttr->eName == XFA_ATTRIBUTE_Name) {
398 continue; 400 continue;
399 } 401 }
400 CFX_WideString wsAttr; 402 CFX_WideString wsAttr;
401 XFA_SaveAttribute(pNode, pAttr->eName, pAttr->pName, FALSE, wsAttr); 403 XFA_SaveAttribute(pNode, pAttr->eName, pAttr->pName, FALSE, wsAttr);
402 wsOutput += wsAttr; 404 wsOutput += wsAttr;
403 } 405 }
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after
544 } 546 }
545 XFA_DataExporter_DealWithDataGroupNode(pExportNode); 547 XFA_DataExporter_DealWithDataGroupNode(pExportNode);
546 pElement->SetString(L"xmlns:xfa", 548 pElement->SetString(L"xmlns:xfa",
547 L"http://www.xfa.org/schema/xfa-data/1.0/"); 549 L"http://www.xfa.org/schema/xfa-data/1.0/");
548 pXMLDoc->SaveXMLNode(pStream, pElement); 550 pXMLDoc->SaveXMLNode(pStream, pElement);
549 pElement->RemoveAttribute(L"xmlns:xfa"); 551 pElement->RemoveAttribute(L"xmlns:xfa");
550 } 552 }
551 return TRUE; 553 return TRUE;
552 } 554 }
553 void XFA_DataExporter_DealWithDataGroupNode(CXFA_Node* pDataNode) { 555 void XFA_DataExporter_DealWithDataGroupNode(CXFA_Node* pDataNode) {
554 if (!pDataNode || pDataNode->GetClassID() == XFA_Element::DataValue) { 556 if (!pDataNode || pDataNode->GetElementType() == XFA_Element::DataValue) {
555 return; 557 return;
556 } 558 }
557 int32_t iChildNum = 0; 559 int32_t iChildNum = 0;
558 for (CXFA_Node* pChildNode = pDataNode->GetNodeItem(XFA_NODEITEM_FirstChild); 560 for (CXFA_Node* pChildNode = pDataNode->GetNodeItem(XFA_NODEITEM_FirstChild);
559 pChildNode; 561 pChildNode;
560 pChildNode = pChildNode->GetNodeItem(XFA_NODEITEM_NextSibling)) { 562 pChildNode = pChildNode->GetNodeItem(XFA_NODEITEM_NextSibling)) {
561 iChildNum++; 563 iChildNum++;
562 XFA_DataExporter_DealWithDataGroupNode(pChildNode); 564 XFA_DataExporter_DealWithDataGroupNode(pChildNode);
563 } 565 }
564 if (pDataNode->GetClassID() == XFA_Element::DataGroup) { 566 if (pDataNode->GetElementType() == XFA_Element::DataGroup) {
565 if (iChildNum > 0) { 567 if (iChildNum > 0) {
566 CFDE_XMLNode* pXMLNode = pDataNode->GetXMLMappingNode(); 568 CFDE_XMLNode* pXMLNode = pDataNode->GetXMLMappingNode();
567 ASSERT(pXMLNode->GetType() == FDE_XMLNODE_Element); 569 ASSERT(pXMLNode->GetType() == FDE_XMLNODE_Element);
568 CFDE_XMLElement* pXMLElement = static_cast<CFDE_XMLElement*>(pXMLNode); 570 CFDE_XMLElement* pXMLElement = static_cast<CFDE_XMLElement*>(pXMLNode);
569 if (pXMLElement->HasAttribute(L"xfa:dataNode")) { 571 if (pXMLElement->HasAttribute(L"xfa:dataNode")) {
570 pXMLElement->RemoveAttribute(L"xfa:dataNode"); 572 pXMLElement->RemoveAttribute(L"xfa:dataNode");
571 } 573 }
572 } else { 574 } else {
573 CFDE_XMLNode* pXMLNode = pDataNode->GetXMLMappingNode(); 575 CFDE_XMLNode* pXMLNode = pDataNode->GetXMLMappingNode();
574 ASSERT(pXMLNode->GetType() == FDE_XMLNODE_Element); 576 ASSERT(pXMLNode->GetType() == FDE_XMLNODE_Element);
575 static_cast<CFDE_XMLElement*>(pXMLNode)->SetString(L"xfa:dataNode", 577 static_cast<CFDE_XMLElement*>(pXMLNode)->SetString(L"xfa:dataNode",
576 L"dataGroup"); 578 L"dataGroup");
577 } 579 }
578 } 580 }
579 } 581 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698