※プログラミング歴一年未満時点の自分用メモです。

目的

<body>
   <ul>
       <li>あいうえお</li>
       <li>かきくけこ</li>
       <li>さしすせそ</li>
   </ul>
</body>

こんな感じのHTMLがあったとして

const item = document.querySelectorAll('li');
const mount = document.createElement('body'); // 「台紙」の意
for(let i = 0; i < item.length; i++){
    const outline = document.createElement('outline');
    outline.setAttribute('text',item[i].innerText);
    mount.appendChild(outline);
}
console.log(mount.innerHTML);

例えばこんな感じでOPMLの中身を作れる

<outline text="あいうえお"></outline>
<outline text="かきくけこ"></outline>
<outline text="さしすせそ"></outline>

自作ツールではこの状態をlocalStorageに保存する

更に、OPMLファイルとして必要な要素をくっつける

const opml = '<?xml version="1.0" encoding="utf-8"?><opml version="2.0"><head></head><body>'+mount.innerHTML+'</body></opml>'; 
console.log(opml);

↓「opml」の中身(実際には1行に繋がっている)