2019-02-04 bouzuya/node-xml 0.1.1 をつくった
bouzuya/node-xml 0.1.1 をつくった。
node-xml は XML の parse/format を提供する npm パッケージ。 npm i @bouzuya/xml
で使える。
つくった経緯。今日は bouzuya/node-hatena-blog-api の CoffeeScript -> TypeScript 移植をしていた。 node-hatena-blog-api は npm:xml2js を使っていた。これのオブジェクト形式には $
や _
などが出てくるなどどうもモヤモヤした。設定でそのあたりは変更できるのだけど思い切って書き直した。
Virtual DOM のときの雰囲気で Node
を定義して npm:hyperscript っぽい create*
を提供した。 format
(Node -> string
) は適当に書いた。 parse
(string -> Node
) は npm:sax を使った。ちなみに xml2js は npm:xmlbuilder と npm:sax を使っているようだ。
コメントや DOCTYPE を捨てていたりルート要素の外のテキストを捨てているので format(parse(xml)) === xml
とならない。まじめにやってない。
sax は ただこれ以上の脱線はさすがにまずい。明日はこれを使って node-hatena-blog-api きちんと進める。<element />
のような self-closing tag を区別する手段が提供されていない点でモヤモヤする。
追記: onopentag
で isSelfClosing: boolean
の形で渡ってきていた。