1 /* 2 * Copyright (c) 2010, 2015, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 package jdk.javadoc.internal.doclets.toolkit.builders; 27 28 import java.util.ArrayList; 29 import java.util.HashMap; 30 import java.util.List; 31 import java.util.Map; 32 33 /** 34 * Simple class to represent the attribute and elements of an XML node. 35 * 36 * <p><b>This is NOT part of any supported API. 37 * If you write code that depends on this, you do so at your own risk. 38 * This code and its internal interfaces are subject to change or 39 * deletion without notice.</b> 40 */ 41 public class XMLNode { 42 XMLNode(XMLNode parent, String qname) { 43 this.parent = parent; 44 name = qname; 45 attrs = new HashMap<>(); 46 children = new ArrayList<>(); 47 48 if (parent != null) 49 parent.children.add(this); 50 } 51 52 @Override 53 public String toString() { 54 StringBuilder sb = new StringBuilder(); 55 sb.append("<"); 56 sb.append(name); 57 for (Map.Entry<String,String> e: attrs.entrySet()) 58 sb.append(" " + e.getKey() + "=\"" + e.getValue() + "\""); 59 if (children.size() == 0) 60 sb.append("/>"); 61 else { 62 sb.append(">"); 63 for (XMLNode c: children) 64 sb.append(c.toString()); 65 sb.append("</" + name + ">"); 66 } 67 return sb.toString(); 68 } 69 70 final XMLNode parent; 71 final String name; 72 final Map<String,String> attrs; 73 final List<XMLNode> children; 74 }