1
2
3
4
5
6
7 package x2j
8
9 import (
10 . "github.com/clbanning/mxj"
11 "io"
12 )
13
14
15 func XmlToMap(xmlVal []byte) (map[string]interface{}, error) {
16 m, err := NewMapXml(xmlVal)
17 if err != nil {
18 return nil, err
19 }
20 return map[string]interface{}(m), nil
21 }
22
23
24 func MapToXml(m map[string]interface{}) ([]byte, error) {
25 return Map(m).Xml()
26 }
27
28
29 func XmlToJson(xmlVal []byte, safeEncoding ...bool) ([]byte, error) {
30 m, err := NewMapXml(xmlVal)
31 if err != nil {
32 return nil, err
33 }
34 return m.Json(safeEncoding...)
35 }
36
37
38 func XmlToJsonWriter(xmlVal []byte, jsonWriter io.Writer, safeEncoding ...bool) ([]byte, error) {
39 m, err := NewMapXml(xmlVal)
40 if err != nil {
41 return nil, err
42 }
43 return m.JsonWriterRaw(jsonWriter, safeEncoding...)
44 }
45
46
47 func XmlReaderToJson(xmlReader io.Reader, safeEncoding ...bool) ([]byte, []byte, error) {
48 m, xraw, err := NewMapXmlReaderRaw(xmlReader)
49 if err != nil {
50 return xraw, nil, err
51 }
52 j, jerr := m.Json(safeEncoding...)
53 return xraw, j, jerr
54 }
55
56
57 func XmlReaderToJsonWriter(xmlReader io.Reader, jsonWriter io.Writer, safeEncoding ...bool) ([]byte, []byte, error) {
58 m, xraw, err := NewMapXmlReaderRaw(xmlReader)
59 if err != nil {
60 return xraw, nil, err
61 }
62 jraw, jerr := m.JsonWriterRaw(jsonWriter, safeEncoding...)
63 return xraw, jraw, jerr
64 }
65
66
67
68
69 func XmlPathsForTag(xmlVal []byte, tag string) ([]string, error) {
70 m, err := NewMapXml(xmlVal)
71 if err != nil {
72 return nil, err
73 }
74 paths := m.PathsForKey(tag)
75 return paths, nil
76 }
77
78
79 func XmlPathForTagShortest(xmlVal []byte, tag string) (string, error) {
80 m, err := NewMapXml(xmlVal)
81 if err != nil {
82 return "", err
83 }
84 path := m.PathForKeyShortest(tag)
85 return path, nil
86 }
87
88
89
90 func XmlValuesForTag(xmlVal []byte, tag string, attrs ...string) ([]interface{}, error) {
91 m, err := NewMapXml(xmlVal)
92 if err != nil {
93 return nil, err
94 }
95 return m.ValuesForKey(tag, attrs...)
96 }
97
98
99
100 func XmlValuesForPath(xmlVal []byte, path string, attrs ...string) ([]interface{}, error) {
101 m, err := NewMapXml(xmlVal)
102 if err != nil {
103 return nil, err
104 }
105 return m.ValuesForPath(path, attrs...)
106 }
107
108
109
110
111
112
113
114 func XmlUpdateValsForPath(xmlVal []byte, newTagValue interface{}, path string, subkeys ...string) ([]byte, error) {
115 m, err := NewMapXml(xmlVal)
116 if err != nil {
117 return nil, err
118 }
119 _, err = m.UpdateValuesForPath(newTagValue, path, subkeys...)
120 if err != nil {
121 return nil, err
122 }
123 return m.Xml()
124 }
125
126
127
128
129 func XmlNewXml(xmlVal []byte, tagpairs ...string) ([]byte, error) {
130 m, err := NewMapXml(xmlVal)
131 if err != nil {
132 return nil, err
133 }
134 n, err := m.NewMap(tagpairs...)
135 if err != nil {
136 return nil, err
137 }
138 return n.Xml()
139 }
140
141
142
143
144 func XmlNewJson(xmlVal []byte, tagpairs ...string) ([]byte, error) {
145 m, err := NewMapXml(xmlVal)
146 if err != nil {
147 return nil, err
148 }
149 n, err := m.NewMap(tagpairs...)
150 if err != nil {
151 return nil, err
152 }
153 return n.Json()
154 }
155
156
157
158 func XmlLeafNodes(xmlVal []byte) ([]LeafNode, error) {
159 m, err := NewMapXml(xmlVal)
160 if err != nil {
161 return nil, err
162 }
163 return m.LeafNodes(), nil
164 }
165
166
167
168 func XmlLeafValues(xmlVal []byte) ([]interface{}, error) {
169 m, err := NewMapXml(xmlVal)
170 if err != nil {
171 return nil, err
172 }
173 return m.LeafValues(), nil
174 }
175
176
177
178 func XmlLeafPath(xmlVal []byte) ([]string, error) {
179 m, err := NewMapXml(xmlVal)
180 if err != nil {
181 return nil, err
182 }
183 return m.LeafPaths(), nil
184 }
185
View as plain text