| 1087 | } |
| 1088 | |
| 1089 | void XMLNode::print(int indent) |
| 1090 | { |
| 1091 | String8 prefix; |
| 1092 | int i; |
| 1093 | for (i=0; i<indent; i++) { |
| 1094 | prefix.append(" "); |
| 1095 | } |
| 1096 | if (getType() == TYPE_ELEMENT) { |
| 1097 | String8 elemNs(getNamespaceUri()); |
| 1098 | if (elemNs.size() > 0) { |
| 1099 | elemNs.append(":"); |
| 1100 | } |
| 1101 | printf("%s E: %s%s", prefix.string(), |
| 1102 | elemNs.string(), String8(getElementName()).string()); |
| 1103 | int N = mAttributes.size(); |
| 1104 | for (i=0; i<N; i++) { |
| 1105 | ssize_t idx = mAttributeOrder.valueAt(i); |
| 1106 | if (i == 0) { |
| 1107 | printf(" / "); |
| 1108 | } else { |
| 1109 | printf(", "); |
| 1110 | } |
| 1111 | const attribute_entry& attr = mAttributes.itemAt(idx); |
| 1112 | String8 attrNs(attr.ns); |
| 1113 | if (attrNs.size() > 0) { |
| 1114 | attrNs.append(":"); |
| 1115 | } |
| 1116 | if (attr.nameResId) { |
| 1117 | printf("%s%s(0x%08x)", attrNs.string(), |
| 1118 | String8(attr.name).string(), attr.nameResId); |
| 1119 | } else { |
| 1120 | printf("%s%s", attrNs.string(), String8(attr.name).string()); |
| 1121 | } |
| 1122 | printf("=%s", String8(attr.string).string()); |
| 1123 | } |
| 1124 | printf("\n"); |
| 1125 | } else if (getType() == TYPE_NAMESPACE) { |
| 1126 | printf("%s N: %s=%s\n", prefix.string(), |
| 1127 | getNamespacePrefix().size() > 0 |
| 1128 | ? String8(getNamespacePrefix()).string() : "<DEF>", |
| 1129 | String8(getNamespaceUri()).string()); |
| 1130 | } else { |
| 1131 | printf("%s C: \"%s\"\n", prefix.string(), String8(getCData()).string()); |
| 1132 | } |
| 1133 | int N = mChildren.size(); |
| 1134 | for (i=0; i<N; i++) { |
| 1135 | mChildren.itemAt(i)->print(indent+1); |
| 1136 | } |
| 1137 | } |
| 1138 | |
| 1139 | static void splitName(const char* name, String16* outNs, String16* outName) |
| 1140 | { |