用Go解析任何HTML表单



我想解析一个像这样的表单:

<form method="post">
<input type="text" name="foo" value="bar"/>
<input type="text" name="blue" value="baz"/>
</form>

我可以在。net/html的帮助下解析这个特定的表单,但也许已经有一种方法可以将每个HTML表单解析成我可以用于request.PostForm()的结构体?

例如,解析一个选择多输入是相当困难的。

有一个Python库可以做到这一点。在这个库的单元测试中,您可以看到以下示例:test_html_form_to_dict.py

看起来是这样的:

package html
import (
"encoding/xml"
"io"
"net/url"
)
type form struct {
Input []struct {
Name string `xml:"name,attr"`
Value string `xml:"value,attr"`
} `xml:"input"`
}
func newForm(r io.Reader) (*form, error) {
f := new(form)
err := xml.NewDecoder(r).Decode(f)
if err != nil {
return nil, err
}
return f, nil
}
func (f form) values() url.Values {
val := make(url.Values)
for _, input := range f.Input {
val.Add(input.Name, input.Value)
}
return val
}

最新更新