const XMLCh* DOMNodeImpl::getTextContent() const { unsigned int nBufferLength = 0; getTextContent(NULL, nBufferLength); XMLCh* pzBuffer = (XMLCh*)((DOMDocumentImpl*)getOwnerDocument())->allocate((nBufferLength+1) * sizeof(XMLCh)); getTextContent(pzBuffer, nBufferLength); pzBuffer[nBufferLength] = 0; return pzBuffer; }
void DOMElement::dumpInfo(FILE * f, int recursion) { NodeList nodes = getChildNodes(); addSpace(f, recursion); fprintf(f, "NODE <%s> (%d children, %d deep)", getTagName().c_str(), (int) nodes.size(), recursion); std::string str = getTextContent(); if(str.size() > 0 && str.size() < 100) { fprintf(f, " TEXT = \"%s\"", str.c_str()); } fprintf(f, "\n"); int i = 1; fflush(f); for(NodeList::iterator it = nodes.begin(); it != nodes.end(); it++) { addSpace(f, recursion); fprintf(f, "Child %d/%d\n", i, (int) nodes.size()); (*it).dumpInfo(f, recursion + 1); i++; } }
result_t XmlElement::get_textContent(exlib::string& retVal) { StringBuffer strs; getTextContent(strs); retVal = strs.str(); return 0; }
static void readSettings(const string& id, DOMElement* element, FreeAX25::Runtime::UniquePointerDict<FreeAX25::Runtime::Setting>& settings) { if (element == nullptr) return; auto nodeList = element->getElementsByTagName(toX("Setting")); for (uint32_t i = 0; i < nodeList->getLength(); ++i) { auto settingElement = static_cast<DOMElement*>(nodeList->item(i)); string name = fmX(settingElement->getAttribute(toX("name"))); string value = fmX(settingElement->getTextContent()); FreeAX25::Runtime::env().logDebug( "Setting " + id + "/" + name + " = \"" + value + "\""); settings.insertNew(name, new FreeAX25::Runtime::Setting(name, value)); } // end for // }
result_t XmlElement::get_textContent(std::string &retVal) { std::vector<std::string> strs; getTextContent(strs); int32_t sz = (int32_t)strs.size(); int32_t len = 0, pos = 0; int32_t i; for (i = 0; i < sz; i ++) len += (int32_t)strs[i].length(); retVal.resize(len); for (i = 0; i < sz; i ++) { int32_t l = (int32_t)strs[i].length(); memcpy(&retVal[pos], strs[i].c_str(), l); pos += l; } return 0; }