void writeXmlError(XmlWriter& writer, const Error& error) { if (error.type() == Error::UnhandledException) writer.beginElement("error"); else writer.beginElement("failure"); writer.attribute("message", error.message()); writer.attribute("type", Error::levelName(error.type())); writer.characterData(error.file()); writer.characterData("["); writer.characterData((int)error.lineNo()); writer.characterData("]"); auto& context = error.context(); for (auto c = begin(context); c != end(context); ++c) { writer.characterData("\n"); writer.characterData(c->text()); } writer.endElement(); }