void StyledHRDMapper::loadRegionMappings(InputSource *is) { DocumentBuilder docbuilder; Document *hrdbase = docbuilder.parse(is); Element *hbase = hrdbase->getDocumentElement(); if (*hbase->getNodeName() != "hrd"){ docbuilder.free(hrdbase); throw Exception(DString("Error loading HRD file")); }; for(Node *curel = hbase->getFirstChild(); curel; curel = curel->getNextSibling()){ if (curel->getNodeType() == Node::ELEMENT_NODE && *curel->getNodeName() == "assign"){ const String *name = ((Element*)curel)->getAttribute(DString("name")); if (name == null) continue; if (regionDefines.get(name) != null){ delete regionDefines.get(name); } int val = 0; bool bfore = UnicodeTools::getNumber(((Element*)curel)->getAttribute(DString("fore")), &val); int fore = val; bool bback = UnicodeTools::getNumber(((Element*)curel)->getAttribute(DString("back")), &val); int back = val; int style = 0; if (UnicodeTools::getNumber(((Element*)curel)->getAttribute(DString("style")), &val)){ style = val; } RegionDefine *rdef = new StyledRegion(bfore, bback, fore, back, style); regionDefines.put(name, rdef); }; }; docbuilder.free(hrdbase); };
void ConsoleTools::setLinkSource(const String &str){ InputSource *linkSource = null; DocumentBuilder docbuilder; Document *linkSourceTree = null; try{ linkSource = InputSource::newInstance(&str); linkSourceTree = docbuilder.parse(linkSource); }catch(Exception &e){ docbuilder.free(linkSourceTree); throw e; } Node *elem = linkSourceTree->getDocumentElement(); if (*elem->getNodeName() != "doclinks"){ throw Exception(DString("Bad doclinks data file structure")); } elem = elem->getFirstChild(); while(elem != null){ if (elem->getNodeType() == Node::ELEMENT_NODE && *elem->getNodeName() == "links"){ const String *url = ((Element*)elem)->getAttribute(DString("url")); const String *scheme = ((Element*)elem)->getAttribute(DString("scheme")); Node *eachLink = elem->getFirstChild(); while(eachLink != null){ if (*eachLink->getNodeName() == "link"){ const String *l_url = ((Element*)eachLink)->getAttribute(DString("url")); const String *l_scheme = ((Element*)eachLink)->getAttribute(DString("scheme")); const String *token = ((Element*)eachLink)->getAttribute(DString("token")); StringBuffer fullURL; if (url != null) fullURL.append(url); if (l_url != null) fullURL.append(l_url); if (l_scheme == null) l_scheme = scheme; if (token == null) continue; StringBuffer hkey(token); if (l_scheme != null && l_scheme->length() > 0){ hkey.append(DString("--")).append(l_scheme); } docLinkHash->put(&hkey, new SString(&fullURL)); } eachLink = eachLink->getNextSibling(); } } elem = elem->getNextSibling(); } delete linkSource; docbuilder.free(linkSourceTree); }
/** Loads region definitions from HRD file. Multiple files could be loaded. */ void TextHRDMapper::loadRegionMappings(InputSource *is) { DocumentBuilder docbuilder; Document *hrdbase = docbuilder.parse(is); Element *hbase = hrdbase->getDocumentElement(); if (*hbase->getNodeName() != "hrd"){ docbuilder.free(hrdbase); throw Exception(DString("Error loading HRD file")); }; for(Node *curel = hbase->getFirstChild(); curel; curel = curel->getNextSibling()){ if (curel->getNodeType() == Node::ELEMENT_NODE && *curel->getNodeName() == "assign"){ const String *name = ((Element*)curel)->getAttribute(DString("name")); if (name == null) continue; if (regionDefines.get(name) != null){ const TextRegion *rd = TextRegion::cast(regionDefines.get(name)); delete rd->stext; delete rd->etext; delete rd->sback; delete rd->eback; delete rd; }; const String *stext = null; const String *etext = null; const String *sback = null; const String *eback = null; const String *sval; sval = ((Element*)curel)->getAttribute(DString("stext")); if (sval != null) stext = new SString(sval); sval = ((Element*)curel)->getAttribute(DString("etext")); if (sval != null) etext = new SString(sval); sval = ((Element*)curel)->getAttribute(DString("sback")); if (sval != null) sback = new SString(sval); sval = ((Element*)curel)->getAttribute(DString("eback")); if (sval != null) eback = new SString(sval); RegionDefine *rdef = new TextRegion(stext, etext, sback, eback); regionDefines.put(name, rdef); }; }; docbuilder.free(hrdbase); };
void FarHrcSettings::readXML(String *file, bool userValue) { DocumentBuilder docbuilder; InputSource *dfis = InputSource::newInstance(file); Document *xmlDocument = docbuilder.parse(dfis); Element *types = xmlDocument->getDocumentElement(); if (*types->getNodeName() != "hrc-settings"){ docbuilder.free(xmlDocument); throw FarHrcSettingsException(DString("main '<hrc-settings>' block not found")); } for (Node *elem = types->getFirstChild(); elem; elem = elem->getNextSibling()){ if (*elem->getNodeName() == "prototype"){ UpdatePrototype((Element*)elem, userValue); continue; } }; docbuilder.free(xmlDocument); delete dfis; }