这是什么?

此软件包旨在为 Brilliant Template 解析 HTML 5 文件。但是,它也可以独立使用。

注意,此软件包使用 IBM HTML 实体:https://github.com/IBM-Swift/swift-html-entities.git 此软件包将被 OWASP XSS 防御备忘单取代。

简而言之...

安装

第一步:创建一个包含这些文件的新目录

Package.swift

import PackageDescription

let package = Package(
    name: "MyTest",
    targets: [],
    dependencies: [
        .Package(url: "https://github.com/ucotta/BrilliantHTML5Parser.git", majorVersion: 0)
    ],
    exclude: []
)

Sources/MyTest/main.swift

import Foundation

import BrilliantHTML5Parser

var data: [String: Any] = [
    "title": "This is the title",
    "welcome": "this is your first example!!",
    "more": "and you can do a lot of stuff",
    "buttonColor": "btn-blue btn-sm btn"
]

let URLINDEX = "https://raw.githubusercontent.com/ucotta/BrilliantHTML5Parser/master/examples/index.html"
if let url = URL(string: URLINDEX) {
    var html = try String(contentsOf: url)
    print("Input HTML:")
    print(html)

    let parser = ParserHTML5(html: html)
    while let item = parser.root.getNextTid() {
        if let val = data[item["tid"]!] {
            item.removeNodes()
            item.addNode(node: TextHTML(text: val as! String))
        }
        item["tid"] = nil
    }

    while let item = parser.root.getNextAid() {
        if let val = data[item["aid"]!] {
            item["class"] = val as! String
        }
        item["aid"] = nil
    }
    print(parser.toHTML)
}

第二步:构建项目

swift package generate-xcodeproj 

打开 Xcode 项目,选择正确的 scheme 并运行!

用法

从头开始创建 HTML5

let parser = ParserHTML5()

let html = TagHTML(tagName: "html")
let head = TagHTML(tagName: "head")
let body = TagHTML(tagName: "body")
let div = TagHTML(tagName: "div")
div["dupl"] = "3"

html["lang"] = "en"
head.addNode(node: TagHTML(tagName: "title", content: "Welcome title!!"))
body.addNode(node: TagHTML(tagName: "h1", content: "Welcome!"))
body.addNode(node: div)


// Add nodes
html.addNode(node: head)
html.addNode(node: body)
parser.root.addNode(node: html)

// Now print result.
print(parser.toHTML)

你会得到这个(但你不会看到它带有制表符)

<!DOCTYPE html>
<html lang="en">
    <head>
        <title>Welcome title!!</title>
    </head>
<body>
    <h1>Welcome!</h1>
    <div dupl="3"></div>
</body>
</html>

如果你想要一个带有制表符的结果,请随时在 ISSUES 中请求此功能。

解析 HTML5 并注释一个 div

let parser = ParserHTML5(html: "somehtmlhere with a div with attribute dupl")

if let div = parser.root.getNextNodeWithAtt(att: "dupl") {
    // first comment the div with att dupl=3
    div.parentNode?.addNode(node: CommentHTML(comment: div.toHTML))
    // Delete the node.
    div.parentNode = nil
    
    print(parser.toHTML)
} else {
    print("The HTML doesnt contains a div with an attribute named *dupl*") 
}

更多示例在测试单元中

BrilliantHTML5ParserTest