MCPcopy Create free account
hub / github.com/codenameone/CodenameOne / parse

Method parse

CodenameOne/src/com/codename1/xml/XMLParser.java:274–312  ·  view source on GitHub ↗
(Reader is)

Source from the content-addressed store, hash-verified

272 ///
273 /// an Element object describing the parsed document (Basically its DOM)
274 public Element parse(Reader is) {
275 buffOffset = 0;
276 buffSize = -1;
277 eventParser = false;
278 Element rootElement = createNewElement("ROOT"); // ROOT is a "dummy" element that all other document elements are added to
279 try {
280 parseTagContent(rootElement, is);
281 } catch (IOException ioe) {
282 Log.e(ioe);
283 }
284 if (rootElement.getNumChildren() == 0) {
285 notifyError(ParserCallback.ERROR_NO_ROOTS, null, null, null, "XML document contains no root element.");
286 return null;
287 } else if (rootElement.getNumChildren() > 1) {
288 StringBuilder roots = new StringBuilder();
289 for (int i = 1; i < rootElement.getNumChildren(); i++) {
290 Element elem = rootElement.getChildAt(i);
291 if (elem.isTextElement()) {
292 roots.append("Text (").append(elem.getText()).append("),");
293 } else {
294 roots.append(elem.getTagName()).append(",");
295 }
296 }
297 if (roots.length() > 0 && roots.charAt(roots.length() - 1) == ',') {
298 roots.setLength(roots.length() - 1);
299 }
300
301 Element firstRoot = rootElement.getChildAt(0);
302 String str = null;
303 if (firstRoot.isTextElement()) {
304 str = "TEXT:" + firstRoot.getText();
305 } else {
306 str = firstRoot.getTagName();
307 }
308 notifyError(ParserCallback.ERROR_MULTIPLE_ROOTS, null, null, null, "XML document contains multiple root elements, only the first root (" + str + ") will be used. Excessive roots: " + roots);
309 }
310 rootElement = rootElement.getChildAt(0);
311 return rootElement;
312 }
313
314 /// Creates a new element. This should be overriden by parsers that use a subclass of Element.
315 ///

Callers 4

fromXmlMethod · 0.95
readResponseMethod · 0.95
parseXMLMethod · 0.95
parseMethod · 0.95

Calls 14

createNewElementMethod · 0.95
parseTagContentMethod · 0.95
eMethod · 0.95
getNumChildrenMethod · 0.95
notifyErrorMethod · 0.95
getChildAtMethod · 0.95
isTextElementMethod · 0.95
appendMethod · 0.95
getTextMethod · 0.95
getTagNameMethod · 0.95
lengthMethod · 0.95
charAtMethod · 0.95

Tested by 1

parseMethod · 0.76