Skip to content

Commit d8708ff

Browse files
committed
Fix #25: XPath query should not fail if XML contains HTML autoclosable tags
1 parent 7c585a2 commit d8708ff

File tree

2 files changed

+19
-7
lines changed

2 files changed

+19
-7
lines changed

internal/utils/utils.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -164,8 +164,7 @@ func FormatXml(reader io.Reader, writer io.Writer, indent string, colors int) er
164164
func XPathQuery(reader io.Reader, writer io.Writer, query string, singleNode bool) error {
165165
doc, err := xmlquery.ParseWithOptions(reader, xmlquery.ParserOptions{
166166
Decoder: &xmlquery.DecoderOptions{
167-
Strict: false,
168-
AutoClose: xml.HTMLAutoClose,
167+
Strict: false,
169168
},
170169
})
171170
if err != nil {

internal/utils/utils_test.go

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -73,11 +73,24 @@ func TestFormatHtml(t *testing.T) {
7373
}
7474

7575
func TestXPathQuery(t *testing.T) {
76-
fileReader := getFileReader(path.Join("..", "..", "test", "data", "xml", "formatted.xml"))
77-
output := new(strings.Builder)
78-
err := XPathQuery(fileReader, output, "//first_name", true)
79-
assert.Nil(t, err)
80-
assert.Equal(t, "John", strings.Trim(output.String(), "\n"))
76+
type test struct {
77+
input string
78+
query string
79+
result string
80+
}
81+
82+
tests := []test{
83+
{input: "formatted.xml", query: "//first_name", result: "John"},
84+
{input: "unformatted8.xml", query: "//title", result: "Some Title"},
85+
}
86+
87+
for _, testCase := range tests {
88+
fileReader := getFileReader(path.Join("..", "..", "test", "data", "xml", testCase.input))
89+
output := new(strings.Builder)
90+
err := XPathQuery(fileReader, output, testCase.query, true)
91+
assert.Nil(t, err)
92+
assert.Equal(t, testCase.result, strings.Trim(output.String(), "\n"))
93+
}
8194
}
8295

8396
func TestCSSQuery(t *testing.T) {

0 commit comments

Comments
 (0)