I have this html in string, I want to modify the src tags such a way that I want to keep the values but append a string at the end of the attribute
HTML before modification
<html>
<head>
<title>LDRA Testbed Results</title>
</head>
<script>
var AddTxt = true;
var TBpublish = true;
</script>
<frameset cols="206,*" marginwidth="0" marginheight="0"
FRAMEBORDER="no" BORDERCOLOR="#DEDEEF">
<frame src="./App_xyz_P_tbresults/App_xyz_P.lfm.htm" name="lFrame" NORESIZE>
<frame src="htm_idx/frontpage.htm" name="rFrame" FRAMEBORDER="no">
</frameset>
</html>
HTML after modification
<html>
<head>
<title>LDRA Testbed Results</title>
</head>
<script>
var AddTxt = true;
var TBpublish = true;
</script>
<frameset cols="206,*" marginwidth="0" marginheight="0" FRAMEBORDER="no" BORDERCOLOR="#DEDEEF">
<frame src="./App_xyz_P_tbresults/App_xyz_P.lfm.htm:A:1" name="lFrame" NORESIZE>
<frame src="htm_idx/frontpage.htm:A:1" name="rFrame" FRAMEBORDER="no">
</frameset>
</html>
How can I do that in Node.js
Current code This is how I'm currently parsing the html code using the parser
var html = chunk.toString();
var temp = html;
html = parse(html);
var modifiedHTML = [];
var elementsTag = [
"<a ",
"<area ",
"<base ",
"<body ",
"<frame ",
"<iframe ",
"<img ",
"<input ",
"<link ",
"<script ",
"<audio ",
"<embed ",
"<source ",
"<track ",
"<video "
];
var elements = [
"a",
"area",
"base",
"body",
"frame",
"iframe",
"img",
"input",
"link",
"script",
"audio",
"embed",
"source",
"track",
"video"
];
for (var i = 0; i < elementsTag.length; i++) {
var count = (temp.match(new RegExp(elementsTag[i], "g")) || []).length;
for (var j = 0; j < count; j++) {
var elementAttr = html.querySelector(elements[i]);
if (elementAttr != null) {
// console.log(elementAttr);
if (Object.keys(elementAttr.attributes).length > 0) {
Object.keys(elementAttr.attributes).forEach(attribute => {
if (attribute == "src" || attribute == "href") {
var attributeVal = elementAttr.attributes[attribute];
// console.log(attributeVal[j]);
attributeVal = attributeVal + `:${project_name}:${type}`;
elementAttr.setAttribute(attribute, attributeVal);
}
});
}
modifiedHTML.push(elementAttr.outerHTML);
}
}
}
console.log(modifiedHTML);
Output:
[
[0] '<frame src="./App_xyz_P_tbresults/App_xyz_P.lfm.htm:TEST:static_analysis_report1:TEST:static_analysis_report1" name="lFrame" NORESIZE></frame>',
[0] '<frame src="./App_xyz_P_tbresults/App_xyz_P.lfm.htm:TEST:static_analysis_report1:TEST:static_analysis_report1:TEST:static_analysis_report1" name="lFrame" NORESIZE></frame>'
[0] ]