OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 } |
OLD | NEW |