Tệp này chứa văn bản unicode hai chiều có thể được giải thích hoặc biên dịch khác với những gì xuất hiện dưới đây. Để xem xét, hãy mở tệp trong một trình soạn thảo cho thấy các ký tự Unicode ẩn. Tìm hiểu thêm về các ký tự unicode hai chiều
Đóng gói Rejify restify | |
nhập khẩu [ [ | |
"bytes" | |
"encoding/json" | |
"golang.org/x/net/html" | |
"log" | |
"strings" | |
] | |
// hội tụ đó | |
// nút HTML được biểu thị bằng cấu trúc jsonnode. | |
funcconverthtmltojson [nút []*html.node] [[] byte, error] { ConvertHtmlToJson[nodes []*html.Node] [[]byte, error] { | |
rootjsonNodes: = make [[] jsonNode, len [nút]]] := make[[]JsonNode, len[nodes]] | |
fori, n: = rangenodes { i, n := range nodes { | |
rootjsonnodes [i] .populationfrom [n][i].populateFrom[n] | |
} | |
returnJson.marshal [rootjsonNodes] json.Marshal[rootJsonNodes] | |
} | |
// jsonNode là một đại diện sẵn sàng cho JSON của một nút HTML. | |
TypeJsonNodestruct { JsonNode struct { | |
// Tên là tên/thẻ của phần tử | |
Namestring`json:"name,omitempty"` string `json:"name,omitempty"` | |
// Các thuộc tính chứa các thuộc tính của phần tử khác ngoài ID, Lớp và HREF | |
Attributesmap[string]string`json:"attributes,omitempty"` map[string]string `json:"attributes,omitempty"` | |
// Lớp chứa thuộc tính lớp của phần tử | |
Classstring`json:"class,omitempty"` string `json:"class,omitempty"` | |
// id chứa thuộc tính id của phần tử | |
Idstring`json:"id,omitempty"` string `json:"id,omitempty"` | |
// href chứa thuộc tính href của phần tử | |
Hrefstring`json:"href,omitempty"` string `json:"href,omitempty"` | |
// Văn bản chứa văn bản bên trong của phần tử | |
Textstring`json:"text,omitempty"` string `json:"text,omitempty"` | |
// Các phần tử chứa các phần tử con của phần tử | |
Các yếu tố [] jsonnode`json: "các yếu tố, omitempty" ` []JsonNode `json:"elements,omitempty"` | |
} | |
// jsonNode là một đại diện sẵn sàng cho JSON của một nút HTML. [n *JsonNode] populateFrom[htmlNode *html.Node] *JsonNode { | |
TypeJsonNodestruct { htmlNode.Type { | |
// Tên là tên/thẻ của phần tử html.ElementNode: | |
n.Name=htmlNode.Data.Name = htmlNode.Data | |
break | |
// Các thuộc tính chứa các thuộc tính của phần tử khác ngoài ID, Lớp và HREF html.DocumentNode: | |
break | |
// Lớp chứa thuộc tính lớp của phần tử: | |
// id chứa thuộc tính id của phần tử.Fatal["Given node needs to be an element or document"] | |
} | |
returnJson.marshal [rootjsonNodes] textBuffer bytes.Buffer | |
} len[htmlNode.Attr] > 0 { | |
// jsonNode là một đại diện sẵn sàng cho JSON của một nút HTML..Attributes = make[map[string]string] | |
TypeJsonNodestruct { a html.Attribute | |
// Tên là tên/thẻ của phần tử _, a = range htmlNode.Attr { | |
// Các thuộc tính chứa các thuộc tính của phần tử khác ngoài ID, Lớp và HREF a.Key { | |
// Lớp chứa thuộc tính lớp của phần tử "class": | |
n.Class=a.Val.Class = a.Val | |
// id chứa thuộc tính id của phần tử "id": | |
n.Id=a.Val.Id = a.Val | |
// href chứa thuộc tính href của phần tử "href": | |
n.Href=a.Val.Href = a.Val | |
// Lớp chứa thuộc tính lớp của phần tử: | |
// id chứa thuộc tính id của phần tử.Attributes[a.Key] = a.Val | |
} | |
} | |
} | |
e:=htmlNode.FirstChild := htmlNode.FirstChild | |
returnJson.marshal [rootjsonNodes] e != nil { | |
} e.Type { | |
// jsonNode là một đại diện sẵn sàng cho JSON của một nút HTML. html.TextNode: | |
TypeJsonNodestruct { := strings.TrimSpace[e.Data] | |
// Tên là tên/thẻ của phần tử len[trimmed] > 0 { | |
// Các thuộc tính chứa các thuộc tính của phần tử khác ngoài ID, Lớp và HREF | |
// Lớp chứa thuộc tính lớp của phần tử textBuffer.Len[] > 0 { | |
// id chứa thuộc tính id của phần tử.WriteString[" "] | |
} | |
returnJson.marshal [rootjsonNodes].WriteString[trimmed] | |
} | |
// Tên là tên/thẻ của phần tử html.ElementNode: | |
// Các thuộc tính chứa các thuộc tính của phần tử khác ngoài ID, Lớp và HREF n.Elements == nil { | |
// Lớp chứa thuộc tính lớp của phần tử.Elements = make[[]JsonNode, 0] | |
} | |
returnJson.marshal [rootjsonNodes] jsonElemNode JsonNode | |
}.populateFrom[e] | |
// jsonNode là một đại diện sẵn sàng cho JSON của một nút HTML..Elements = append[n.Elements, jsonElemNode] | |
} | |
e=e.NextSibling = e.NextSibling | |
} | |
// Lớp chứa thuộc tính lớp của phần tử textBuffer.Len[] > 0 { | |
// id chứa thuộc tính id của phần tử.Text = textBuffer.String[] | |
} | |
returnJson.marshal [rootjsonNodes] n | |
} |