Parsing different formats
Contents
- Parsing JSON
- Parsing XML
- Parsing HTML with gumbo-query
Parsing JSON
local t = ParseJSON(nm.responseBody());
if (t!= null && "thumb_url" in t) {
WriteLog("info", t.thumb_url);
}
Parsing XML
function _GetUploadUrl() {
xml.LoadFromString(nm.responseBody());
local root = xml.GetRoot("response", false);
if (root.IsNull()) {
WriteLog("error", "[example.com]: Invalid response when getting upload URL");
return null;
}
local statusNode = root.GetChild("status", false);
if (statusNode.IsNull() || statusNode.Text() != "OK") {
WriteLog("error", "[example.com]: Error status when getting upload URL");
return null;
}
local urlNode = root.GetChild("url", false);
if (urlNode.IsNull()) {
WriteLog(
"error",
"[example.com]: Upload URL not found in response");
return null;
}
return urlNode.Text();
}
Definition SimpleXml.h:138
void WriteLog(string type, string message)
Parsing HTML with gumbo-query
Gumbo-query is a library that provides CSS selector-like queries for Gumbo-Parser. Use ScriptAPI::Document class.
local txt = "<h1><a id=\"logo\" class=\"link\">some link</a></h1>";
local doc = Document(txt);
print(doc.find("h1 a").text()+"\r\n");
print(doc.find("h1 a").length()+"\r\n");
print(doc.find("#logo").attr("class")+"\r\n");
nm.doGet("https://svistunov.dev");
doc = Document(nm.responseBody());
doc.find("a").each( function(index,elem) {
print(elem.text()+"-\r\n");
});