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 "core/fxcrt/xml_int.h" | 7 #include "core/fxcrt/xml_int.h" |
8 | 8 |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 353 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
364 return nullptr; | 364 return nullptr; |
365 } | 365 } |
366 CFX_ByteString tag_name, tag_space; | 366 CFX_ByteString tag_name, tag_space; |
367 FX_BOOL bEndTag; | 367 FX_BOOL bEndTag; |
368 GetTagName(tag_space, tag_name, bEndTag, bStartTag); | 368 GetTagName(tag_space, tag_name, bEndTag, bStartTag); |
369 if (tag_name.IsEmpty() || bEndTag) { | 369 if (tag_name.IsEmpty() || bEndTag) { |
370 return nullptr; | 370 return nullptr; |
371 } | 371 } |
372 CXML_Element* pElement = new CXML_Element; | 372 CXML_Element* pElement = new CXML_Element; |
373 pElement->m_pParent = pParent; | 373 pElement->m_pParent = pParent; |
374 pElement->SetTag(tag_space.AsByteStringC(), tag_name.AsByteStringC()); | 374 pElement->SetTag(tag_space.AsStringC(), tag_name.AsStringC()); |
375 do { | 375 do { |
376 CFX_ByteString attr_space, attr_name; | 376 CFX_ByteString attr_space, attr_name; |
377 while (m_dwIndex < m_dwBufferSize) { | 377 while (m_dwIndex < m_dwBufferSize) { |
378 SkipWhiteSpaces(); | 378 SkipWhiteSpaces(); |
379 if (IsEOF()) { | 379 if (IsEOF()) { |
380 break; | 380 break; |
381 } | 381 } |
382 if (!g_FXCRT_XML_IsNameIntro(m_pBuffer[m_dwIndex])) { | 382 if (!g_FXCRT_XML_IsNameIntro(m_pBuffer[m_dwIndex])) { |
383 break; | 383 break; |
384 } | 384 } |
385 GetName(attr_space, attr_name); | 385 GetName(attr_space, attr_name); |
386 SkipWhiteSpaces(); | 386 SkipWhiteSpaces(); |
387 if (IsEOF()) { | 387 if (IsEOF()) { |
388 break; | 388 break; |
389 } | 389 } |
390 if (m_pBuffer[m_dwIndex] != '=') { | 390 if (m_pBuffer[m_dwIndex] != '=') { |
391 break; | 391 break; |
392 } | 392 } |
393 m_dwIndex++; | 393 m_dwIndex++; |
394 SkipWhiteSpaces(); | 394 SkipWhiteSpaces(); |
395 if (IsEOF()) { | 395 if (IsEOF()) { |
396 break; | 396 break; |
397 } | 397 } |
398 CFX_WideString attr_value; | 398 CFX_WideString attr_value; |
399 GetAttrValue(attr_value); | 399 GetAttrValue(attr_value); |
400 pElement->m_AttrMap.SetAt(attr_space.AsByteStringC(), | 400 pElement->m_AttrMap.SetAt(attr_space.AsStringC(), attr_name.AsStringC(), |
401 attr_name.AsByteStringC(), | 401 attr_value.AsStringC()); |
402 attr_value.AsWideStringC()); | |
403 } | 402 } |
404 m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex; | 403 m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex; |
405 if (m_dwIndex < m_dwBufferSize || IsEOF()) { | 404 if (m_dwIndex < m_dwBufferSize || IsEOF()) { |
406 break; | 405 break; |
407 } | 406 } |
408 } while (ReadNextBlock()); | 407 } while (ReadNextBlock()); |
409 SkipWhiteSpaces(); | 408 SkipWhiteSpaces(); |
410 if (IsEOF()) { | 409 if (IsEOF()) { |
411 return pElement; | 410 return pElement; |
412 } | 411 } |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
455 GetName(space, name); | 454 GetName(space, name); |
456 SkipWhiteSpaces(); | 455 SkipWhiteSpaces(); |
457 m_dwIndex++; | 456 m_dwIndex++; |
458 iState = 10; | 457 iState = 10; |
459 } else { | 458 } else { |
460 content << decoder.GetResult(); | 459 content << decoder.GetResult(); |
461 CFX_WideString dataStr = content.GetWideString(); | 460 CFX_WideString dataStr = content.GetWideString(); |
462 if (!bCDATA && !m_bSaveSpaceChars) { | 461 if (!bCDATA && !m_bSaveSpaceChars) { |
463 dataStr.TrimRight(L" \t\r\n"); | 462 dataStr.TrimRight(L" \t\r\n"); |
464 } | 463 } |
465 InsertContentSegment(bCDATA, dataStr.AsWideStringC(), pElement); | 464 InsertContentSegment(bCDATA, dataStr.AsStringC(), pElement); |
466 content.Clear(); | 465 content.Clear(); |
467 decoder.Clear(); | 466 decoder.Clear(); |
468 bCDATA = FALSE; | 467 bCDATA = FALSE; |
469 iState = 0; | 468 iState = 0; |
470 m_dwIndex--; | 469 m_dwIndex--; |
471 CXML_Element* pSubElement = ParseElement(pElement, TRUE); | 470 CXML_Element* pSubElement = ParseElement(pElement, TRUE); |
472 if (!pSubElement) { | 471 if (!pSubElement) { |
473 break; | 472 break; |
474 } | 473 } |
475 pSubElement->m_pParent = pElement; | 474 pSubElement->m_pParent = pElement; |
(...skipping 23 matching lines...) Expand all Loading... |
499 m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex; | 498 m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex; |
500 if (iState == 10 || m_dwIndex < m_dwBufferSize || IsEOF()) { | 499 if (iState == 10 || m_dwIndex < m_dwBufferSize || IsEOF()) { |
501 break; | 500 break; |
502 } | 501 } |
503 } while (ReadNextBlock()); | 502 } while (ReadNextBlock()); |
504 content << decoder.GetResult(); | 503 content << decoder.GetResult(); |
505 CFX_WideString dataStr = content.GetWideString(); | 504 CFX_WideString dataStr = content.GetWideString(); |
506 if (!m_bSaveSpaceChars) { | 505 if (!m_bSaveSpaceChars) { |
507 dataStr.TrimRight(L" \t\r\n"); | 506 dataStr.TrimRight(L" \t\r\n"); |
508 } | 507 } |
509 InsertContentSegment(bCDATA, dataStr.AsWideStringC(), pElement); | 508 InsertContentSegment(bCDATA, dataStr.AsStringC(), pElement); |
510 content.Clear(); | 509 content.Clear(); |
511 decoder.Clear(); | 510 decoder.Clear(); |
512 bCDATA = FALSE; | 511 bCDATA = FALSE; |
513 return pElement; | 512 return pElement; |
514 } | 513 } |
515 void CXML_Parser::InsertContentSegment(FX_BOOL bCDATA, | 514 void CXML_Parser::InsertContentSegment(FX_BOOL bCDATA, |
516 const CFX_WideStringC& content, | 515 const CFX_WideStringC& content, |
517 CXML_Element* pElement) { | 516 CXML_Element* pElement) { |
518 if (content.IsEmpty()) { | 517 if (content.IsEmpty()) { |
519 return; | 518 return; |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
595 } | 594 } |
596 CFX_ByteString bsTag = m_QSpaceName; | 595 CFX_ByteString bsTag = m_QSpaceName; |
597 bsTag += ":"; | 596 bsTag += ":"; |
598 bsTag += m_TagName; | 597 bsTag += m_TagName; |
599 return bsTag; | 598 return bsTag; |
600 } | 599 } |
601 CFX_ByteString CXML_Element::GetNamespace(FX_BOOL bQualified) const { | 600 CFX_ByteString CXML_Element::GetNamespace(FX_BOOL bQualified) const { |
602 if (bQualified) { | 601 if (bQualified) { |
603 return m_QSpaceName; | 602 return m_QSpaceName; |
604 } | 603 } |
605 return GetNamespaceURI(m_QSpaceName.AsByteStringC()); | 604 return GetNamespaceURI(m_QSpaceName.AsStringC()); |
606 } | 605 } |
607 CFX_ByteString CXML_Element::GetNamespaceURI( | 606 CFX_ByteString CXML_Element::GetNamespaceURI( |
608 const CFX_ByteStringC& qName) const { | 607 const CFX_ByteStringC& qName) const { |
609 const CFX_WideString* pwsSpace; | 608 const CFX_WideString* pwsSpace; |
610 const CXML_Element* pElement = this; | 609 const CXML_Element* pElement = this; |
611 do { | 610 do { |
612 if (qName.IsEmpty()) { | 611 if (qName.IsEmpty()) { |
613 pwsSpace = pElement->m_AttrMap.Lookup("", "xmlns"); | 612 pwsSpace = pElement->m_AttrMap.Lookup("", "xmlns"); |
614 } else { | 613 } else { |
615 pwsSpace = pElement->m_AttrMap.Lookup("xmlns", qName); | 614 pwsSpace = pElement->m_AttrMap.Lookup("xmlns", qName); |
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
788 m_pMap->push_back({space, name, value}); | 787 m_pMap->push_back({space, name, value}); |
789 } | 788 } |
790 | 789 |
791 int CXML_AttrMap::GetSize() const { | 790 int CXML_AttrMap::GetSize() const { |
792 return m_pMap ? pdfium::CollectionSize<int>(*m_pMap) : 0; | 791 return m_pMap ? pdfium::CollectionSize<int>(*m_pMap) : 0; |
793 } | 792 } |
794 | 793 |
795 CXML_AttrItem& CXML_AttrMap::GetAt(int index) const { | 794 CXML_AttrItem& CXML_AttrMap::GetAt(int index) const { |
796 return (*m_pMap)[index]; | 795 return (*m_pMap)[index]; |
797 } | 796 } |
OLD | NEW |