Mercurial Hosting > luan
comparison src/goodjava/xml/XmlElement.java @ 1790:a8c685a894b4
start xml work
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Mon, 25 Dec 2023 23:07:59 -0700 |
parents | 21f5edab1fbf |
children | f8f5c51f5b36 |
comparison
equal
deleted
inserted
replaced
1789:bac27b119ff2 | 1790:a8c685a894b4 |
---|---|
4 | 4 |
5 | 5 |
6 public final class XmlElement { | 6 public final class XmlElement { |
7 public final String name; | 7 public final String name; |
8 public final Map<String,String> attributes; | 8 public final Map<String,String> attributes; |
9 public final Object content; | 9 private Object content = null; |
10 | 10 |
11 public XmlElement(String name,Map<String,String> attributes) { | 11 public XmlElement(String name,Map<String,String> attributes) { |
12 this.name = name; | 12 this.name = name; |
13 this.attributes = attributes; | 13 this.attributes = attributes; |
14 this.content = null; | 14 this.content = null; |
15 } | 15 } |
16 | 16 |
17 public XmlElement(String name,Map<String,String> attributes,String content) { | 17 public Object getContent() { |
18 return content; | |
19 } | |
20 | |
21 public void removeContent() { | |
22 content = null; | |
23 } | |
24 | |
25 public void setContent(String content) { | |
18 if( content == null ) | 26 if( content == null ) |
19 throw new IllegalArgumentException("content can't be null"); | 27 throw new IllegalArgumentException("content can't be null"); |
20 this.name = name; | |
21 this.attributes = attributes; | |
22 this.content = content; | 28 this.content = content; |
23 } | 29 } |
24 | 30 |
25 public XmlElement(String name,Map<String,String> attributes,XmlElement[] content) { | 31 public void setContent(XmlElement[] content) { |
26 if( content == null ) | 32 if( content == null ) |
27 throw new IllegalArgumentException("content can't be null"); | 33 throw new IllegalArgumentException("content can't be null"); |
28 if( content.length == 0 ) | 34 if( content.length == 0 ) |
29 throw new IllegalArgumentException("content can't be empty"); | 35 throw new IllegalArgumentException("content can't be empty"); |
30 this.name = name; | |
31 this.attributes = attributes; | |
32 this.content = content; | 36 this.content = content; |
33 } | 37 } |
34 | 38 |
35 public String toString() { | 39 @Override public String toString() { |
36 StringBuilder sb = new StringBuilder(); | 40 StringBuilder sb = new StringBuilder(); |
37 toString(sb,0); | 41 toString(sb,0); |
38 return sb.toString(); | 42 return sb.toString(); |
39 } | 43 } |
40 | 44 |
41 private void toString(StringBuilder sb,int indented) { | 45 void toString(StringBuilder sb,int indented) { |
42 indent(sb,indented); | 46 indent(sb,indented); |
43 sb.append( '<' ); | 47 sb.append( '<' ); |
44 sb.append( name ); | 48 sb.append( name ); |
45 for( Map.Entry<String,String> attribute : attributes.entrySet() ) { | 49 for( Map.Entry<String,String> attribute : attributes.entrySet() ) { |
46 sb.append( ' ' ); | 50 sb.append( ' ' ); |
98 buf.append("""); | 102 buf.append("""); |
99 break; | 103 break; |
100 case '\'': | 104 case '\'': |
101 buf.append("'"); | 105 buf.append("'"); |
102 break; | 106 break; |
107 case '\n': | |
108 buf.append(" "); | |
109 break; | |
110 case '\r': | |
111 buf.append(" "); | |
112 break; | |
103 default: | 113 default: |
104 buf.append(c); | 114 buf.append(c); |
105 } | 115 } |
106 } | 116 } |
107 return buf.toString(); | 117 return buf.toString(); |