blog.bouzuya.net

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:xmlbuildernpm:sax を使っているようだ。

コメントや DOCTYPE を捨てていたりルート要素の外のテキストを捨てているので format(parse(xml)) === xml とならない。まじめにやってない。

sax は <element /> のような self-closing tag を区別する手段が提供されていない点でモヤモヤする。ただこれ以上の脱線はさすがにまずい。明日はこれを使って node-hatena-blog-api きちんと進める。

追記: onopentagisSelfClosing: boolean の形で渡ってきていた。