Mercurial > 510Connectbot
annotate app/src/main/java/com/five_ten_sg/connectbot/util/XmlBuilder.java @ 526:9a8862b87f6e stable-1.9.4-8
bump version
author | Carl Byington <carl@five-ten-sg.com> |
---|---|
date | Sat, 01 Jun 2024 10:27:22 -0600 |
parents | d29cce60f393 |
children |
rev | line source |
---|---|
0 | 1 /* |
2 * ConnectBot: simple, powerful, open-source SSH client for Android | |
3 * Copyright 2007 Kenny Root, Jeffrey Sharkey | |
4 * | |
5 * Licensed under the Apache License, Version 2.0 (the "License"); | |
6 * you may not use this file except in compliance with the License. | |
7 * You may obtain a copy of the License at | |
8 * | |
9 * http://www.apache.org/licenses/LICENSE-2.0 | |
10 * | |
11 * Unless required by applicable law or agreed to in writing, software | |
12 * distributed under the License is distributed on an "AS IS" BASIS, | |
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
14 * See the License for the specific language governing permissions and | |
15 * limitations under the License. | |
16 */ | |
17 | |
18 package com.five_ten_sg.connectbot.util; | |
19 | |
273
91a31873c42a
start conversion from trilead to ganymed
Carl Byington <carl@five-ten-sg.com>
parents:
0
diff
changeset
|
20 import ch.ethz.ssh2.crypto.Base64; |
0 | 21 |
22 /** | |
23 * @author Kenny Root | |
24 * | |
25 */ | |
26 public class XmlBuilder { | |
27 private StringBuilder sb; | |
28 | |
29 public XmlBuilder() { | |
30 sb = new StringBuilder(); | |
31 } | |
32 | |
33 public XmlBuilder append(String data) { | |
34 sb.append(data); | |
35 return this; | |
36 } | |
37 | |
38 public XmlBuilder append(String field, Object data) { | |
39 if (data == null) { | |
40 sb.append(String.format("<%s/>", field)); | |
41 } | |
42 else if (data instanceof String) { | |
43 String input = (String) data; | |
44 boolean binary = false; | |
45 | |
46 for (byte b : input.getBytes()) { | |
47 if (b < 0x20 || b > 0x7e) { | |
48 binary = true; | |
49 break; | |
50 } | |
51 } | |
52 | |
53 sb.append(String.format("<%s>%s</%s>", field, | |
54 binary ? new String(Base64.encode(input.getBytes())) : input, field)); | |
55 } | |
56 else if (data instanceof Integer) { | |
57 sb.append(String.format("<%s>%d</%s>", field, data, field)); | |
58 } | |
59 else if (data instanceof Long) { | |
60 sb.append(String.format("<%s>%d</%s>", field, data, field)); | |
61 } | |
62 else if (data instanceof byte[]) { | |
63 sb.append(String.format("<%s>%s</%s>", field, new String(Base64.encode((byte[]) data)), field)); | |
64 } | |
65 else if (data instanceof Boolean) { | |
66 sb.append(String.format("<%s>%s</%s>", field, data, field)); | |
67 } | |
68 | |
69 return this; | |
70 } | |
71 | |
72 @Override | |
73 public String toString() { | |
74 return sb.toString(); | |
75 } | |
76 } |