void AbstractXULParser::getAttributes(const Poco::XML::Attributes & inXMLAttributes, AttributesMapping & outXULAttributes) { for (int idx = 0; idx != inXMLAttributes.getLength(); ++idx) { const Poco::XML::XMLString & name = inXMLAttributes.getLocalName(idx); const Poco::XML::XMLString & value = inXMLAttributes.getValue(idx); outXULAttributes[name] = value; } }
void startElement(const Poco::XML::XMLString& uri, const Poco::XML::XMLString& localName, const Poco::XML::XMLString& qname, const Poco::XML::Attributes& attributes) { where("startElement"); m_Msg.Message(Poco::format(" uri: %s", uri)); m_Msg.Message(Poco::format(" localName: %s", localName)); m_Msg.Message(Poco::format(" qname: %s", qname)); if(0 != attributes.getLength()) { m_Msg.Message(" Attributes: "); for(int i=0; i<attributes.getLength(); ++i) { m_Msg.Message(Poco::format(" %s=\"%s\"", attributes.getLocalName(i), attributes.getValue(i))); } } }
void VSXMLWriter::startElement(const Poco::XML::XMLString& namespaceURI, const Poco::XML::XMLString& localName, const Poco::XML::XMLString& qname, const Poco::XML::Attributes& attributes) { if (!_tagClosed.back()) { _ostr << ">\r\n"; _tagClosed.back() = true; } indent(); ++_indent; _ostr << "<" << qname; if (attributes.getLength() > 0) { Poco::XML::AttributesImpl sortedAttributes; if (qname == "VisualStudioProject") { sortedAttributes.addAttribute("", "", "Name", "CDATA", attributes.getValue("Name")); sortedAttributes.addAttribute("", "", "Version", "CDATA", attributes.getValue("Version")); sortedAttributes.addAttribute("", "", "ProjectType", "CDATA", attributes.getValue("ProjectType")); sortedAttributes.addAttribute("", "", "ProjectGUID", "CDATA", attributes.getValue("ProjectGUID")); sortedAttributes.addAttribute("", "", "RootNamespace", "CDATA", attributes.getValue("RootNamespace")); sortedAttributes.addAttribute("", "", "Keyword", "CDATA", attributes.getValue("Keyword")); } else { if (attributes.getIndex("Name") != -1) { sortedAttributes.addAttribute("", "", "Name", "CDATA", attributes.getValue("Name")); } for (int i = 0; i < attributes.getLength(); i++) { if (attributes.getQName(i) != "Name") { std::string value = attributes.getValue(i); if (_convertBool && (value == "true" || value == "false")) value = Poco::toUpper(value); sortedAttributes.addAttribute(attributes.getURI(i), attributes.getLocalName(i), attributes.getQName(i), attributes.getType(i), value); } } } for (int i = 0; i < sortedAttributes.getLength(); i++) { _ostr << "\r\n"; indent(); _ostr << sortedAttributes.getQName(i) << "=\""; std::string value = sortedAttributes.getValue(i); for (Poco::XML::XMLString::const_iterator itv = value.begin(); itv != value.end(); ++itv) { char c = *itv; switch (c) { case '"': _ostr << """; break; case '\'': _ostr << "'"; break; case '&': _ostr << "&"; break; case '<': _ostr << "<"; break; case '>': _ostr << ">"; break; case '\t': _ostr << "	"; break; case '\r': _ostr << "
"; break; case '\n': _ostr << "
"; break; default: _ostr << c; break; } } _ostr << "\""; } } _tagClosed.push_back(false); }