| 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->GetClassID() == 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->GetClassID() != 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->GetClassID() != 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->GetClassID() != 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(); |
| 180 if (eUIType == XFA_ELEMENT_PasswordEdit) { | 180 if (eUIType == XFA_Element::PasswordEdit) { |
| 181 return FALSE; | 181 return FALSE; |
| 182 } | 182 } |
| 183 return TRUE; | 183 return TRUE; |
| 184 } | 184 } |
| 185 static void XFA_DataExporter_RecognizeXFAVersionNumber( | 185 static void XFA_DataExporter_RecognizeXFAVersionNumber( |
| 186 CXFA_Node* pTemplateRoot, | 186 CXFA_Node* pTemplateRoot, |
| 187 CFX_WideString& wsVersionNumber) { | 187 CFX_WideString& wsVersionNumber) { |
| 188 wsVersionNumber.clear(); | 188 wsVersionNumber.clear(); |
| 189 if (!pTemplateRoot) { | 189 if (!pTemplateRoot) { |
| 190 return; | 190 return; |
| (...skipping 29 matching lines...) Expand all Loading... |
| 220 wsAttrs += wsAttr; | 220 wsAttrs += wsAttr; |
| 221 } | 221 } |
| 222 CFX_WideString wsChildren; | 222 CFX_WideString wsChildren; |
| 223 switch (pNode->GetObjectType()) { | 223 switch (pNode->GetObjectType()) { |
| 224 case XFA_ObjectType::ContentNode: { | 224 case XFA_ObjectType::ContentNode: { |
| 225 if (!bSaveXML && !XFA_DataExporter_ContentNodeNeedtoExport(pNode)) { | 225 if (!bSaveXML && !XFA_DataExporter_ContentNodeNeedtoExport(pNode)) { |
| 226 break; | 226 break; |
| 227 } | 227 } |
| 228 CXFA_Node* pRawValueNode = pNode->GetNodeItem(XFA_NODEITEM_FirstChild); | 228 CXFA_Node* pRawValueNode = pNode->GetNodeItem(XFA_NODEITEM_FirstChild); |
| 229 while (pRawValueNode && | 229 while (pRawValueNode && |
| 230 pRawValueNode->GetClassID() != XFA_ELEMENT_SharpxHTML && | 230 pRawValueNode->GetClassID() != XFA_Element::SharpxHTML && |
| 231 pRawValueNode->GetClassID() != XFA_ELEMENT_Sharptext && | 231 pRawValueNode->GetClassID() != XFA_Element::Sharptext && |
| 232 pRawValueNode->GetClassID() != XFA_ELEMENT_Sharpxml) { | 232 pRawValueNode->GetClassID() != XFA_Element::Sharpxml) { |
| 233 pRawValueNode = pRawValueNode->GetNodeItem(XFA_NODEITEM_NextSibling); | 233 pRawValueNode = pRawValueNode->GetNodeItem(XFA_NODEITEM_NextSibling); |
| 234 } | 234 } |
| 235 if (!pRawValueNode) { | 235 if (!pRawValueNode) { |
| 236 break; | 236 break; |
| 237 } | 237 } |
| 238 CFX_WideString wsContentType; | 238 CFX_WideString wsContentType; |
| 239 pNode->GetAttribute(XFA_ATTRIBUTE_ContentType, wsContentType, FALSE); | 239 pNode->GetAttribute(XFA_ATTRIBUTE_ContentType, wsContentType, FALSE); |
| 240 if (pRawValueNode->GetClassID() == XFA_ELEMENT_SharpxHTML && | 240 if (pRawValueNode->GetClassID() == XFA_Element::SharpxHTML && |
| 241 wsContentType == FX_WSTRC(L"text/html")) { | 241 wsContentType == FX_WSTRC(L"text/html")) { |
| 242 CFDE_XMLNode* pExDataXML = pNode->GetXMLMappingNode(); | 242 CFDE_XMLNode* pExDataXML = pNode->GetXMLMappingNode(); |
| 243 if (!pExDataXML) { | 243 if (!pExDataXML) { |
| 244 break; | 244 break; |
| 245 } | 245 } |
| 246 CFDE_XMLNode* pRichTextXML = | 246 CFDE_XMLNode* pRichTextXML = |
| 247 pExDataXML->GetNodeItem(CFDE_XMLNode::FirstChild); | 247 pExDataXML->GetNodeItem(CFDE_XMLNode::FirstChild); |
| 248 if (!pRichTextXML) { | 248 if (!pRichTextXML) { |
| 249 break; | 249 break; |
| 250 } | 250 } |
| 251 IFX_MemoryStream* pMemStream = FX_CreateMemoryStream(TRUE); | 251 IFX_MemoryStream* pMemStream = FX_CreateMemoryStream(TRUE); |
| 252 IFX_Stream* pTempStream = IFX_Stream::CreateStream( | 252 IFX_Stream* pTempStream = IFX_Stream::CreateStream( |
| 253 (IFX_FileWrite*)pMemStream, FX_STREAMACCESS_Text | | 253 (IFX_FileWrite*)pMemStream, FX_STREAMACCESS_Text | |
| 254 FX_STREAMACCESS_Write | | 254 FX_STREAMACCESS_Write | |
| 255 FX_STREAMACCESS_Append); | 255 FX_STREAMACCESS_Append); |
| 256 pTempStream->SetCodePage(FX_CODEPAGE_UTF8); | 256 pTempStream->SetCodePage(FX_CODEPAGE_UTF8); |
| 257 pRichTextXML->SaveXMLNode(pTempStream); | 257 pRichTextXML->SaveXMLNode(pTempStream); |
| 258 wsChildren += CFX_WideString::FromUTF8( | 258 wsChildren += CFX_WideString::FromUTF8( |
| 259 CFX_ByteStringC(pMemStream->GetBuffer(), pMemStream->GetSize())); | 259 CFX_ByteStringC(pMemStream->GetBuffer(), pMemStream->GetSize())); |
| 260 pTempStream->Release(); | 260 pTempStream->Release(); |
| 261 pMemStream->Release(); | 261 pMemStream->Release(); |
| 262 } else if (pRawValueNode->GetClassID() == XFA_ELEMENT_Sharpxml && | 262 } else if (pRawValueNode->GetClassID() == XFA_Element::Sharpxml && |
| 263 wsContentType == FX_WSTRC(L"text/xml")) { | 263 wsContentType == FX_WSTRC(L"text/xml")) { |
| 264 CFX_WideString wsRawValue; | 264 CFX_WideString wsRawValue; |
| 265 pRawValueNode->GetAttribute(XFA_ATTRIBUTE_Value, wsRawValue, FALSE); | 265 pRawValueNode->GetAttribute(XFA_ATTRIBUTE_Value, wsRawValue, FALSE); |
| 266 if (wsRawValue.IsEmpty()) { | 266 if (wsRawValue.IsEmpty()) { |
| 267 break; | 267 break; |
| 268 } | 268 } |
| 269 CFX_WideStringArray wsSelTextArray; | 269 CFX_WideStringArray wsSelTextArray; |
| 270 int32_t iStart = 0; | 270 int32_t iStart = 0; |
| 271 int32_t iEnd = wsRawValue.Find(L'\n', iStart); | 271 int32_t iEnd = wsRawValue.Find(L'\n', iStart); |
| 272 iEnd = (iEnd == -1) ? wsRawValue.GetLength() : iEnd; | 272 iEnd = (iEnd == -1) ? wsRawValue.GetLength() : iEnd; |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 306 wsChildren += XFA_ExportEncodeContent(wsValue); | 306 wsChildren += XFA_ExportEncodeContent(wsValue); |
| 307 } | 307 } |
| 308 } break; | 308 } break; |
| 309 case XFA_ObjectType::TextNode: | 309 case XFA_ObjectType::TextNode: |
| 310 case XFA_ObjectType::NodeC: | 310 case XFA_ObjectType::NodeC: |
| 311 case XFA_ObjectType::NodeV: { | 311 case XFA_ObjectType::NodeV: { |
| 312 CFX_WideStringC wsValue = pNode->GetCData(XFA_ATTRIBUTE_Value); | 312 CFX_WideStringC wsValue = pNode->GetCData(XFA_ATTRIBUTE_Value); |
| 313 wsChildren += XFA_ExportEncodeContent(wsValue); | 313 wsChildren += XFA_ExportEncodeContent(wsValue); |
| 314 } break; | 314 } break; |
| 315 default: | 315 default: |
| 316 if (pNode->GetClassID() == XFA_ELEMENT_Items) { | 316 if (pNode->GetClassID() == XFA_Element::Items) { |
| 317 CXFA_Node* pTemplateNode = pNode->GetTemplateNode(); | 317 CXFA_Node* pTemplateNode = pNode->GetTemplateNode(); |
| 318 if (!pTemplateNode || | 318 if (!pTemplateNode || |
| 319 pTemplateNode->CountChildren(XFA_ELEMENT_UNKNOWN) != | 319 pTemplateNode->CountChildren(XFA_Element::Unknown) != |
| 320 pNode->CountChildren(XFA_ELEMENT_UNKNOWN)) { | 320 pNode->CountChildren(XFA_Element::Unknown)) { |
| 321 bSaveXML = TRUE; | 321 bSaveXML = TRUE; |
| 322 } | 322 } |
| 323 } | 323 } |
| 324 CFX_WideTextBuf newBuf; | 324 CFX_WideTextBuf newBuf; |
| 325 CXFA_Node* pChildNode = pNode->GetNodeItem(XFA_NODEITEM_FirstChild); | 325 CXFA_Node* pChildNode = pNode->GetNodeItem(XFA_NODEITEM_FirstChild); |
| 326 while (pChildNode) { | 326 while (pChildNode) { |
| 327 XFA_DataExporter_RegenerateFormFile_Changed(pChildNode, newBuf, | 327 XFA_DataExporter_RegenerateFormFile_Changed(pChildNode, newBuf, |
| 328 bSaveXML); | 328 bSaveXML); |
| 329 wsChildren += newBuf.AsStringC(); | 329 wsChildren += newBuf.AsStringC(); |
| 330 newBuf.Clear(); | 330 newBuf.Clear(); |
| 331 pChildNode = pChildNode->GetNodeItem(XFA_NODEITEM_NextSibling); | 331 pChildNode = pChildNode->GetNodeItem(XFA_NODEITEM_NextSibling); |
| 332 } | 332 } |
| 333 if (!bSaveXML && !wsChildren.IsEmpty() && | 333 if (!bSaveXML && !wsChildren.IsEmpty() && |
| 334 pNode->GetClassID() == XFA_ELEMENT_Items) { | 334 pNode->GetClassID() == XFA_Element::Items) { |
| 335 wsChildren.clear(); | 335 wsChildren.clear(); |
| 336 bSaveXML = TRUE; | 336 bSaveXML = TRUE; |
| 337 CXFA_Node* pChild = pNode->GetNodeItem(XFA_NODEITEM_FirstChild); | 337 CXFA_Node* pChild = pNode->GetNodeItem(XFA_NODEITEM_FirstChild); |
| 338 while (pChild) { | 338 while (pChild) { |
| 339 XFA_DataExporter_RegenerateFormFile_Changed(pChild, newBuf, bSaveXML); | 339 XFA_DataExporter_RegenerateFormFile_Changed(pChild, newBuf, bSaveXML); |
| 340 wsChildren += newBuf.AsStringC(); | 340 wsChildren += newBuf.AsStringC(); |
| 341 newBuf.Clear(); | 341 newBuf.Clear(); |
| 342 pChild = pChild->GetNodeItem(XFA_NODEITEM_NextSibling); | 342 pChild = pChild->GetNodeItem(XFA_NODEITEM_NextSibling); |
| 343 } | 343 } |
| 344 } | 344 } |
| (...skipping 18 matching lines...) Expand all Loading... |
| 363 buf << FX_WSTRC(L"</"); | 363 buf << FX_WSTRC(L"</"); |
| 364 buf << wsElement; | 364 buf << wsElement; |
| 365 buf << FX_WSTRC(L"\n>"); | 365 buf << FX_WSTRC(L"\n>"); |
| 366 } | 366 } |
| 367 } | 367 } |
| 368 } | 368 } |
| 369 static void XFA_DataExporter_RegenerateFormFile_Container( | 369 static void XFA_DataExporter_RegenerateFormFile_Container( |
| 370 CXFA_Node* pNode, | 370 CXFA_Node* pNode, |
| 371 IFX_Stream* pStream, | 371 IFX_Stream* pStream, |
| 372 FX_BOOL bSaveXML = FALSE) { | 372 FX_BOOL bSaveXML = FALSE) { |
| 373 XFA_ELEMENT eElement = pNode->GetClassID(); | 373 XFA_Element eElement = pNode->GetClassID(); |
| 374 if (eElement == XFA_ELEMENT_Field || eElement == XFA_ELEMENT_Draw || | 374 if (eElement == XFA_Element::Field || eElement == XFA_Element::Draw || |
| 375 !pNode->IsContainerNode()) { | 375 !pNode->IsContainerNode()) { |
| 376 CFX_WideTextBuf buf; | 376 CFX_WideTextBuf buf; |
| 377 XFA_DataExporter_RegenerateFormFile_Changed(pNode, buf, bSaveXML); | 377 XFA_DataExporter_RegenerateFormFile_Changed(pNode, buf, bSaveXML); |
| 378 FX_STRSIZE nLen = buf.GetLength(); | 378 FX_STRSIZE nLen = buf.GetLength(); |
| 379 if (nLen > 0) { | 379 if (nLen > 0) { |
| 380 pStream->WriteString((const FX_WCHAR*)buf.GetBuffer(), nLen); | 380 pStream->WriteString((const FX_WCHAR*)buf.GetBuffer(), nLen); |
| 381 } | 381 } |
| 382 return; | 382 return; |
| 383 } | 383 } |
| 384 CFX_WideStringC wsElement; | 384 CFX_WideStringC wsElement; |
| (...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 544 } | 544 } |
| 545 XFA_DataExporter_DealWithDataGroupNode(pExportNode); | 545 XFA_DataExporter_DealWithDataGroupNode(pExportNode); |
| 546 pElement->SetString(L"xmlns:xfa", | 546 pElement->SetString(L"xmlns:xfa", |
| 547 L"http://www.xfa.org/schema/xfa-data/1.0/"); | 547 L"http://www.xfa.org/schema/xfa-data/1.0/"); |
| 548 pXMLDoc->SaveXMLNode(pStream, pElement); | 548 pXMLDoc->SaveXMLNode(pStream, pElement); |
| 549 pElement->RemoveAttribute(L"xmlns:xfa"); | 549 pElement->RemoveAttribute(L"xmlns:xfa"); |
| 550 } | 550 } |
| 551 return TRUE; | 551 return TRUE; |
| 552 } | 552 } |
| 553 void XFA_DataExporter_DealWithDataGroupNode(CXFA_Node* pDataNode) { | 553 void XFA_DataExporter_DealWithDataGroupNode(CXFA_Node* pDataNode) { |
| 554 if (!pDataNode || pDataNode->GetClassID() == XFA_ELEMENT_DataValue) { | 554 if (!pDataNode || pDataNode->GetClassID() == XFA_Element::DataValue) { |
| 555 return; | 555 return; |
| 556 } | 556 } |
| 557 int32_t iChildNum = 0; | 557 int32_t iChildNum = 0; |
| 558 for (CXFA_Node* pChildNode = pDataNode->GetNodeItem(XFA_NODEITEM_FirstChild); | 558 for (CXFA_Node* pChildNode = pDataNode->GetNodeItem(XFA_NODEITEM_FirstChild); |
| 559 pChildNode; | 559 pChildNode; |
| 560 pChildNode = pChildNode->GetNodeItem(XFA_NODEITEM_NextSibling)) { | 560 pChildNode = pChildNode->GetNodeItem(XFA_NODEITEM_NextSibling)) { |
| 561 iChildNum++; | 561 iChildNum++; |
| 562 XFA_DataExporter_DealWithDataGroupNode(pChildNode); | 562 XFA_DataExporter_DealWithDataGroupNode(pChildNode); |
| 563 } | 563 } |
| 564 if (pDataNode->GetClassID() == XFA_ELEMENT_DataGroup) { | 564 if (pDataNode->GetClassID() == XFA_Element::DataGroup) { |
| 565 if (iChildNum > 0) { | 565 if (iChildNum > 0) { |
| 566 CFDE_XMLNode* pXMLNode = pDataNode->GetXMLMappingNode(); | 566 CFDE_XMLNode* pXMLNode = pDataNode->GetXMLMappingNode(); |
| 567 ASSERT(pXMLNode->GetType() == FDE_XMLNODE_Element); | 567 ASSERT(pXMLNode->GetType() == FDE_XMLNODE_Element); |
| 568 CFDE_XMLElement* pXMLElement = static_cast<CFDE_XMLElement*>(pXMLNode); | 568 CFDE_XMLElement* pXMLElement = static_cast<CFDE_XMLElement*>(pXMLNode); |
| 569 if (pXMLElement->HasAttribute(L"xfa:dataNode")) { | 569 if (pXMLElement->HasAttribute(L"xfa:dataNode")) { |
| 570 pXMLElement->RemoveAttribute(L"xfa:dataNode"); | 570 pXMLElement->RemoveAttribute(L"xfa:dataNode"); |
| 571 } | 571 } |
| 572 } else { | 572 } else { |
| 573 CFDE_XMLNode* pXMLNode = pDataNode->GetXMLMappingNode(); | 573 CFDE_XMLNode* pXMLNode = pDataNode->GetXMLMappingNode(); |
| 574 ASSERT(pXMLNode->GetType() == FDE_XMLNODE_Element); | 574 ASSERT(pXMLNode->GetType() == FDE_XMLNODE_Element); |
| 575 static_cast<CFDE_XMLElement*>(pXMLNode)->SetString(L"xfa:dataNode", | 575 static_cast<CFDE_XMLElement*>(pXMLNode)->SetString(L"xfa:dataNode", |
| 576 L"dataGroup"); | 576 L"dataGroup"); |
| 577 } | 577 } |
| 578 } | 578 } |
| 579 } | 579 } |
| OLD | NEW |