38 return XmlDocument (textToParse).getDocumentElement();
76 ||
c ==
'_' ||
c ==
'-' ||
c ==
':' ||
c ==
'.';
81 static const uint32 legalChars[] = { 0, 0x7ff6000, 0x87fffffe, 0x7fffffe, 0 };
114 std::unique_ptr<InputStream>
in (
inputSource->createInputStream());
119 data.writeFromInputStream (*
in, onlyReadOuterDocumentElement ? 8192 : -1);
121 #if JUCE_STRING_UTF_TYPE == 8
122 if (
data.getDataSize() > 2)
125 auto*
text =
static_cast<const char*
> (
data.getData());
153 if (xml->hasTagName (requiredTag))
177 return in->readEntireStreamAsString();
185 auto c =
input.getAndAdvance();
197 bool onlyReadOuterDocumentElement)
204 if (textToParse.isEmpty())
236 if (headerEnd.isEmpty())
254 jassert (encoding.isEmpty() || encoding.startsWithIgnoreCase (
"utf-"));
257 input = headerEnd + 2;
269 auto dtdStart =
input;
271 for (
int n = 1;
n > 0;)
294 input.incrementToEndOfWhitespace();
311 if (closeComment < 0)
317 input += closeComment + 3;
326 if (closeBracket < 0)
332 input += closeBracket + 2;
364 auto character = *
input;
366 if (character == quote)
373 if (character ==
'&')
405 if (endOfToken ==
input)
411 if (endOfToken ==
input)
429 if (
c ==
'/' &&
input[1] ==
'>')
440 if (alsoParseSubElements)
451 if (attNameEnd !=
input)
453 auto attNameStart =
input;
460 auto nextChar = *
input;
462 if (nextChar ==
'"' || nextChar ==
'\'')
466 attributeAppender.
append (newAtt);
473 +
String (attNameStart, attNameEnd) +
"'",
false);
497 auto preWhitespaceInput =
input;
516 input += closeTag + 1;
524 auto inputStart =
input;
537 if (c0 ==
']' &&
input[1] ==
']' &&
input[2] ==
'>')
558 input = preWhitespaceInput;
573 if (closeComment < 0)
580 input += closeComment + 3;
601 auto oldInput =
input;
615 textElementContent << entity;
623 auto nextChar = *
input;
625 if (nextChar ==
'\r')
629 if (
input[1] ==
'\n')
633 if (nextChar ==
'<' || nextChar ==
'&')
649 if (contentShouldBeUsed)
685 else if (*
input ==
'#')
687 int64_t charCode = 0;
695 while (
input[0] !=
';')
699 if (hexValue < 0 || ++numChars > 8)
705 charCode = (charCode << 4) | hexValue;
717 const auto firstChar =
input[0];
725 if (firstChar ==
';')
734 charCode = charCode * 10 + ((
int) firstChar -
'0');
751 auto entityNameStart =
input;
754 if (closingSemiColon < 0)
761 input += closingSemiColon + 1;
779 if (char1 ==
'x' || char1 ==
'X')
782 if (char1 >=
'0' && char1 <=
'9')
812 auto openBracket =
dtdText.indexOfChar (
'[');
816 auto closeBracket =
dtdText.lastIndexOfChar (
']');
818 if (closeBracket > openBracket)
820 closeBracket),
true);
835 for (
int j = newToks.
size(); --
j >= 0;)
850 auto ent =
tokenisedDTD [
i + 1].trimCharactersAtEnd (
">").trim().unquoted();
853 auto ampersand = ent.indexOfChar (
'&');
855 while (ampersand >= 0)
857 auto semiColon = ent.indexOf (
i + 1,
";");
861 setLastError (
"entity without terminating semi-colon",
false);
865 auto resolved =
expandEntity (ent.substring (
i + 1, semiColon));
867 ent = ent.substring (0, ampersand)
869 + ent.substring (semiColon + 1);
871 ampersand = ent.indexOfChar (semiColon + 1,
'&');
893 if (ent.equalsIgnoreCase (
"system"))
896 return ent.trim().unquoted();
#define noexcept
Definition DistrhoDefines.h:72
static String charToString(water_uchar character)
Definition String.cpp:311
bool parseDTD()
Definition XmlDocument.cpp:251
XmlElement * readNextElement(bool alsoParseSubElements)
Definition XmlDocument.cpp:377
void setLastError(const String &, bool carryOn)
Definition XmlDocument.cpp:153
static XmlElement * parse(const File &file)
Definition XmlDocument.cpp:59
String getFileContents(const String &) const
Definition XmlDocument.cpp:159
void skipNextWhiteSpace()
Definition XmlDocument.cpp:277
bool parseHeader()
Definition XmlDocument.cpp:218
void setInputSource(FileInputSource *newSource) noexcept
Definition XmlDocument.cpp:71
~XmlDocument()
Definition XmlDocument.cpp:55
String getParameterEntity(const String &)
Definition XmlDocument.cpp:865
void readQuotedString(String &)
Definition XmlDocument.cpp:328
const String & getLastParseError() const noexcept
Definition XmlDocument.cpp:148
void setEmptyTextElementsIgnored(bool shouldBeIgnored) noexcept
Definition XmlDocument.cpp:76
void readEntity(String &)
Definition XmlDocument.cpp:646
String expandExternalEntity(const String &)
Definition XmlDocument.cpp:773
void readChildElements(XmlElement &)
Definition XmlDocument.cpp:481
water_uchar readNextChar() noexcept
Definition XmlDocument.cpp:172
XmlDocument(const String &documentText)
Definition XmlDocument.cpp:35
XmlElement * parseDocumentElement(CharPointer_UTF8, bool outer)
Definition XmlDocument.cpp:185
XmlElement * getDocumentElement(bool onlyReadOuterDocumentElement=false)
Definition XmlDocument.cpp:120
String expandEntity(const String &)
Definition XmlDocument.cpp:748
Definition juce_CharPointer_ASCII.h:38
static bool isByteOrderMarkBigEndian(const void *possibleByteOrder) noexcept
Definition juce_CharPointer_UTF16.h:487
static bool isByteOrderMarkLittleEndian(const void *possibleByteOrder) noexcept
Definition juce_CharPointer_UTF16.h:501
static bool isByteOrderMark(const void *possibleByteOrder) noexcept
Definition juce_CharPointer_UTF8.h:555
static bool isWhitespace(char character) noexcept
Definition juce_CharacterFunctions.cpp:59
static int getHexDigitValue(juce_wchar digit) noexcept
Definition juce_CharacterFunctions.cpp:112
static bool isLetterOrDigit(char character) noexcept
Definition juce_CharacterFunctions.cpp:90
static CharPointerType1 find(CharPointerType1 textToSearch, const CharPointerType2 substringToLookFor) noexcept
Definition juce_CharacterFunctions.h:708
static int compareUpTo(CharPointerType1 s1, CharPointerType2 s2, int maxChars) noexcept
Definition juce_CharacterFunctions.h:624
Definition juce_File.h:45
Definition juce_LinkedListPointer.h:339
void append(ObjectType *const newItem) noexcept
Definition juce_LinkedListPointer.h:351
Definition juce_MemoryOutputStream.h:36
String toUTF8() const
Definition juce_MemoryOutputStream.cpp:189
bool appendUTF8Char(juce_wchar character)
Definition juce_MemoryOutputStream.cpp:132
Definition juce_StringArray.h:35
int size() const noexcept
Definition juce_StringArray.h:136
int addTokens(StringRef stringToTokenise, bool preserveQuotedStrings)
Definition juce_StringArray.cpp:329
Definition juce_String.h:53
CharPointerType getCharPointer() const noexcept
Definition juce_String.h:1153
bool equalsIgnoreCase(const String &other) const noexcept
Definition juce_String.cpp:590
String upToFirstOccurrenceOf(StringRef substringToEndWith, bool includeSubStringInResult, bool ignoreCase) const
Definition juce_String.cpp:1585
String trim() const
Definition juce_String.cpp:1656
bool startsWithChar(juce_wchar character) const noexcept
Definition juce_String.cpp:1403
String substring(int startIndex, int endIndex) const
Definition juce_String.cpp:1498
bool containsNonWhitespaceChars() const noexcept
Definition juce_String.cpp:1814
int getIntValue() const noexcept
Definition juce_String.cpp:1871
String fromFirstOccurrenceOf(StringRef substringToStartFrom, bool includeSubStringInResult, bool ignoreCase) const
Definition juce_String.cpp:1565
int getHexValue32() const noexcept
Definition juce_String.cpp:1953
Definition juce_StringRef.h:62
Definition juce_XmlDocument.h:64
void setLastError(const String &, bool carryOn)
Definition juce_XmlDocument.cpp:164
StringArray tokenisedDTD
Definition juce_XmlDocument.h:154
String getParameterEntity(const String &)
Definition juce_XmlDocument.cpp:883
XmlElement * readNextElement(bool alsoParseSubElements)
Definition juce_XmlDocument.cpp:392
String getFileContents(const String &) const
Definition juce_XmlDocument.cpp:170
void readEntity(String &)
Definition juce_XmlDocument.cpp:655
std::unique_ptr< XmlElement > getDocumentElementIfTagMatches(StringRef requiredTag)
Definition juce_XmlDocument.cpp:150
void readChildElements(XmlElement &)
Definition juce_XmlDocument.cpp:491
String expandEntity(const String &)
Definition juce_XmlDocument.cpp:767
std::unique_ptr< XmlElement > getDocumentElement(bool onlyReadOuterDocumentElement=false)
Definition juce_XmlDocument.cpp:110
juce_wchar readNextChar() noexcept
Definition juce_XmlDocument.cpp:183
bool needToLoadDTD
Definition juce_XmlDocument.h:155
void readQuotedString(String &)
Definition juce_XmlDocument.cpp:341
String expandExternalEntity(const String &)
Definition juce_XmlDocument.cpp:792
XmlDocument(const String &documentText)
Definition juce_XmlDocument.cpp:26
bool ignoreEmptyTextElements
Definition juce_XmlDocument.h:155
String lastError
Definition juce_XmlDocument.h:153
String originalText
Definition juce_XmlDocument.h:150
bool parseDTD()
Definition juce_XmlDocument.cpp:264
bool errorOccurred
Definition juce_XmlDocument.h:152
void skipNextWhiteSpace()
Definition juce_XmlDocument.cpp:290
std::unique_ptr< XmlElement > parseDocumentElement(String::CharPointerType, bool outer)
Definition juce_XmlDocument.cpp:196
bool parseHeader()
Definition juce_XmlDocument.cpp:228
bool outOfData
Definition juce_XmlDocument.h:152
String::CharPointerType input
Definition juce_XmlDocument.h:151
String dtdText
Definition juce_XmlDocument.h:153
std::unique_ptr< InputSource > inputSource
Definition juce_XmlDocument.h:156
Definition juce_XmlElement.h:83
LinkedListPointer< XmlAttributeNode > attributes
Definition juce_XmlElement.h:783
static XmlElement * createTextElement(const String &text)
Definition juce_XmlElement.cpp:952
const String & getTagName() const noexcept
Definition juce_XmlElement.h:173
register unsigned j
Definition inflate.c:1576
register unsigned i
Definition inflate.c:1575
static char filename[]
Definition features.c:5
static uintptr_t parent
Definition pugl.h:1644
virtual ASIOError start()=0
JSAMPIMAGE data
Definition jpeglib.h:945
float in
Definition lilv_test.c:1460
Definition juce_XmlDocument.cpp:72
static String::CharPointerType findEndOfToken(String::CharPointerType p) noexcept
Definition juce_XmlDocument.cpp:101
static bool isIdentifierCharSlow(juce_wchar c) noexcept
Definition juce_XmlDocument.cpp:73
static bool isIdentifierChar(juce_wchar c) noexcept
Definition juce_XmlDocument.cpp:79
Definition carla_juce.cpp:31
std::unique_ptr< XmlElement > parseXMLIfTagMatches(const String &textToParse, StringRef requiredTag)
Definition juce_XmlDocument.cpp:51
unsigned int uint32
Definition juce_MathsFunctions.h:45
wchar_t juce_wchar
Definition juce_CharacterFunctions.h:42
std::unique_ptr< XmlElement > parseXML(const String &textToParse)
Definition juce_XmlDocument.cpp:41
static String substring(const String &text, Range< int > range)
Definition juce_TextLayout.cpp:29
constexpr int numElementsInArray(Type(&)[N]) noexcept
Definition juce_MathsFunctions.h:344
png_uint_32 length
Definition png.c:2247
Definition juce_XmlElement.h:763
const char const char const char const char char * fn
Definition swell-functions.h:168
const char * text
Definition swell-functions.h:167
int n
Definition crypt.c:458
uch * p
Definition crypt.c:594
return c
Definition crypt.c:175
int result
Definition process.c:1455
typedef int(UZ_EXP MsgFn)()
struct zdirent * file
Definition win32.c:1500
#define const
Definition zconf.h:137