admin管理员组文章数量:1425875
I have an html string that contains multiple <p>
tags. WIthin each <p>
tag there is a word and its definition.
let data = "<p><strong>Word 1:</strong> Definition of word 1</p><p><strong>Word 2:</strong> Definition of word 2</p>"
My goal is to convert this html string into an array of objects that looks like below:
[
{"word": "Word 1", "definition": "Definition of word 1"},
{"word": "Word 2", "definition": "Definition of word 2"}
]
I am doing it as follows:
var parser = new DOMParser();
var parsedHtml = parser.parseFromString(data, "text/html");
let pTags = parsedHtml.getElementsByTagName("p");
let vocab = []
pTags.forEach(function(item){
// This is where I need help to split and convert item into object
vocab.push(item.innerHTML)
});
As you can see the ment in the above code, that is where I'm stuck. Any help is appreciated.
I have an html string that contains multiple <p>
tags. WIthin each <p>
tag there is a word and its definition.
let data = "<p><strong>Word 1:</strong> Definition of word 1</p><p><strong>Word 2:</strong> Definition of word 2</p>"
My goal is to convert this html string into an array of objects that looks like below:
[
{"word": "Word 1", "definition": "Definition of word 1"},
{"word": "Word 2", "definition": "Definition of word 2"}
]
I am doing it as follows:
var parser = new DOMParser();
var parsedHtml = parser.parseFromString(data, "text/html");
let pTags = parsedHtml.getElementsByTagName("p");
let vocab = []
pTags.forEach(function(item){
// This is where I need help to split and convert item into object
vocab.push(item.innerHTML)
});
As you can see the ment in the above code, that is where I'm stuck. Any help is appreciated.
Share Improve this question edited Dec 21, 2018 at 11:23 Rom 1,84814 silver badges28 bronze badges asked Dec 21, 2018 at 10:27 asanasasanas 4,28015 gold badges52 silver badges82 bronze badges 4- Please create and share a fiddle which can describe what you tried to do – Varit J Patel Commented Dec 21, 2018 at 10:32
- How about this link stackoverflow./questions/13272406/…? – soorapadman Commented Dec 21, 2018 at 10:33
- @manfromnowhere That's not about parsing HTML, it's JSON. – Barmar Commented Dec 21, 2018 at 10:37
-
Can you change the HTML to put a tag around the definition, like
<span class="definition">Definition of word 1</span>
? – Barmar Commented Dec 21, 2018 at 10:38
3 Answers
Reset to default 3Use textContent
to get the text out of an element. The word is in the strong
child element, the definition is the rest of the text.
var parser = new DomParser();
var parsedHtml = parser.parseFromString(data, "text/html");
let pTags = parsedHtml.getElementsByTagName("p");
let vocab = []
pTags.forEach(function(item){
let word = item.getElementsByTagName("strong")[0].textContent.trim();
let allText = item.textContent;
let definition = allText.replace(word, "").trim();
vocab.push({word: word, definition: definition})
});
A bit adhoc but works.
const data = "<p><strong>Word 1:</strong> Definition of word 1</p><p><strong>Word 2:</strong> Definition of word 2</p>";
const parsedData = [
{
"word1": data.split('<strong>')[1].split('</strong>')[0].trim(),
"definition": data.split('</strong>')[1].split('</p>')[0].trim()
},
{
"word2": data.split('</p>')[1].split('<strong>')[1].split('</strong>')[0].trim(),
"definition": data.split('</p>')[1].split('</strong>')[1].split('</p>')[0].trim()
}
]
console.log(parsedData);
You should fix:
DOMParser
, notDomParser
pTags
cannot use.forEach()
, please usefor
loop
My solution for your problem:
let data = "<p><strong>Word 1:</strong> Definition of word 1</p><p><strong>Word 2:</strong> Definition of word 2</p>"
var parser = new DOMParser();
var parsedHtml = parser.parseFromString(data, "text/html");
let pTags = parsedHtml.getElementsByTagName("p");
let vocab = [];
for (let p of pTags) {
const word = p.getElementsByTagName('strong')[0].innerHTML.replace(':', '').trim();
const definition = p.innerHTML.replace(/<strong>.*<\/strong>/, '').trim();
vocab.push( { word, definition } )
}
console.log(vocab);
本文标签: javascriptParse HTML String to ArrayStack Overflow
版权声明:本文标题:javascript - Parse HTML String to Array - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1745413266a2657563.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论