public static string GenerateSVG(Map map, bool use_linq = false) { string header = "<?xml version = \"1.0\" encoding = \"utf-8\" standalone = \"no\"?>\n"; if (use_linq) { XNamespace xNamespace = "http://www.w3.org/2000/svg"; XNamespace sodipodi = "http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"; XNamespace inkscape = "http://www.inkscape.org/namespaces/inkscape"; XElement root = new XElement( xNamespace + "svg", new XAttribute("width", Constants.map_width + "mm"), new XAttribute("height", Constants.map_height + "mm"), new XAttribute("version", "1.1"), new XAttribute("baseProfile", "full"), new XAttribute("viewBox", "0 0 " + Constants.map_width + " " + Constants.map_height), new XAttribute("xmlns", "http://www.w3.org/2000/svg"), new XAttribute(XNamespace.Xmlns + "ev", "http://www.w3.org/2001/xml-events"), new XAttribute(XNamespace.Xmlns + "xlink", "http://www.w3.org/1999/xlink"), new XAttribute(XNamespace.Xmlns + "sodipodi", "http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"), new XAttribute(XNamespace.Xmlns + "inkscape", "http://www.inkscape.org/namespaces/inkscape"), new XElement( sodipodi + "namedview", new XAttribute(inkscape + "document-units", "mm") ) ); foreach (MapSegment segment in map.segments) { root.Add(segment.GenerateXML()); } return(header + root.ToString().Replace(" xmlns=\"\"", "")); } else { /* <svg * width="1500mm" * height="1500mm" * version="1.1" * baseProfile="full" * viewBox="0 0 1500 1500" * xmlns="http://www.w3.org/2000/svg" * xmlns:ev="http://www.w3.org/2001/xml-events" * xmlns:xlink="http://www.w3.org/1999/xlink" * xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" * xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" * > */ XMLNode root = new XMLNode( "svg", new Dictionary <string, object> { { "width", Constants.map_width + "mm" }, { "height", Constants.map_height + "mm" }, { "version", "1.1" }, { "baseProfile", "full" }, { "viewBox", "0 0 " + Constants.map_width + " " + Constants.map_height }, { "xmlns", "http://www.w3.org/2000/svg" }, { "xmlns:ev", "http://www.w3.org/2001/xml-events" }, { "xmlns:xlink", "http://www.w3.org/2001/xml-events" }, { "xmlns:sodipodi", "http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" }, { "xmlns:inkscape", "http://www.inkscape.org/namespaces/inkscape" } }, map.segments.Select(x => x.GenerateXMLFast()) ); return(header + root.ToString()); } }