char * getValue(char * line , HeapHandler h){ char * formated = trim(line , h); int indexEqual = indexOfChar(formated , '='); if(indexEqual > 0) return subString(formated , indexEqual +1 , (int) strlen(formated)-1 , h); else return NULL; }
char * getKey(char * line , HeapHandler h){ char * formated = trim(line , h); int indexEqual = indexOfChar(formated , '='); if(indexEqual > 0){ return subString(formated , 0 , indexEqual -1 , h); }else{ return NULL; } }
String XmlDocument::expandExternalEntity (const String& entity) { if (needToLoadDTD) { if (dtdText.isNotEmpty()) { dtdText = dtdText.trimCharactersAtEnd (">"); tokenisedDTD.addTokens (dtdText, true); if (tokenisedDTD[tokenisedDTD.size() - 2].equalsIgnoreCase ("system") && tokenisedDTD[tokenisedDTD.size() - 1].isQuotedString()) { auto fn = tokenisedDTD[tokenisedDTD.size() - 1]; tokenisedDTD.clear(); tokenisedDTD.addTokens (getFileContents (fn), true); } else { tokenisedDTD.clear(); auto openBracket = dtdText.indexOfChar ('['); if (openBracket > 0) { auto closeBracket = dtdText.lastIndexOfChar (']'); if (closeBracket > openBracket) tokenisedDTD.addTokens (dtdText.substring (openBracket + 1, closeBracket), true); } } for (int i = tokenisedDTD.size(); --i >= 0;) { if (tokenisedDTD[i].startsWithChar ('%') && tokenisedDTD[i].endsWithChar (';')) { auto parsed = getParameterEntity (tokenisedDTD[i].substring (1, tokenisedDTD[i].length() - 1)); StringArray newToks; newToks.addTokens (parsed, true); tokenisedDTD.remove (i); for (int j = newToks.size(); --j >= 0;) tokenisedDTD.insert (i, newToks[j]); } } } needToLoadDTD = false; } for (int i = 0; i < tokenisedDTD.size(); ++i) { if (tokenisedDTD[i] == entity) { if (tokenisedDTD[i - 1].equalsIgnoreCase ("<!entity")) { auto ent = tokenisedDTD [i + 1].trimCharactersAtEnd (">").trim().unquoted(); // check for sub-entities.. auto ampersand = ent.indexOfChar ('&'); while (ampersand >= 0) { auto semiColon = ent.indexOf (i + 1, ";"); if (semiColon < 0) { setLastError ("entity without terminating semi-colon", false); break; } auto resolved = expandEntity (ent.substring (i + 1, semiColon)); ent = ent.substring (0, ampersand) + resolved + ent.substring (semiColon + 1); ampersand = ent.indexOfChar (semiColon + 1, '&'); } return ent; } } } setLastError ("unknown entity", true); return entity; }