1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.vectomatic.dom.svg.impl;
19
20 import org.vectomatic.dom.svg.utils.DOMHelper;
21 import org.vectomatic.dom.svg.utils.ParserException;
22 import org.vectomatic.dom.svg.utils.SVGConstants;
23
24 import com.google.gwt.core.client.JavaScriptObject;
25 import com.google.gwt.dom.client.Document;
26 import com.google.gwt.dom.client.Element;
27 import com.google.gwt.dom.client.Text;
28
29 public class SVGParserImpl {
30 @SuppressWarnings("unused")
31 private final JavaScriptObject domParser = createDOMParser();
32
33 private native JavaScriptObject createDOMParser()
34
35 ;
36
37 public final native Document parseFromString(String rawText, String contentType)
38
39 ;
40
41
42
43
44
45
46
47
48 public SVGSVGElement parse(String rawSvg) throws ParserException {
49 SVGDocument doc = parseFromString(rawSvg, "text/xml").cast();
50 Element elt = doc.getDocumentElement();
51 if ("parsererror".equals(DOMHelper.getLocalName(elt))) {
52 String message = "Parsing error";
53 if (elt.getFirstChild() != null) {
54 message = elt.getFirstChild().<Text>cast().getData();
55 }
56 throw new ParserException(ParserException.Type.NotWellFormed, message);
57 }
58 return DOMHelper.importNode(DOMHelper.getCurrentDocument(), elt, true).<SVGSVGElement>cast();
59 }
60
61 }