標準愚痴出力

個人的なIT作業ログです。もしかしたら一般的に参考になることが書いているかもしれません(弱気

htnblog.exe v0.3.1 を公開しました

変更点は以下のとおり

  • ドラフトのテキストが空だった時、投稿をキャンセルするようにした
  • htnblog.exe edit で、ドラフトフラグが no になってしまう不具合を修正

XML定義の構造体の中で

IsDraft   string     `xml:"app:control>app:draft,omitempty"`

と定義していたんですが、これがうまく読み取れてなかった模様。 app: を外すと読めるんですが、そうすると今度 post する時、タグ名に app: がつかない懸念が。

などの記載を参考に試行錯誤し、最終的に

diff --git a/xmlentry.go b/xmlentry.go
index 4c165e1..d5ede69 100644
--- a/xmlentry.go
+++ b/xmlentry.go
@@ -10,11 +10,16 @@ type XmlEntry struct {
        XMLNsApp  string     `xml:"xmlns:app,attr"`
        Title     string     `xml:"title"`
        Content   XmlContent `xml:"content"`
-       IsDraft   string     `xml:"app:control>app:draft,omitempty"`
        Link      []XmlLink  `xml:"link"`
        Updated   string     `xml:"updated,omitempty"`
        Published string     `xml:"published,omitempty"`
        AppEdited string     `xml:"app:edited,omitempty"`
+       Control   XmlControl `xml:"http://www.w3.org/2007/app control"`
+}
+
+type XmlControl struct {
+       XMLName xml.Name `xml:"http://www.w3.org/2007/app control"`
+       Draft   string   `xml:"http://www.w3.org/2007/app draft,omitempty"`
 }

としたところ、Draft フラグの読み書きが満足ゆく形に。

ただし、xml.Marshal の結果を見ると、<app:draft> ではなく、<draft xmlns="http://www.w3.org/2007/app"> となっていたので、完全に意図どおりというわけではないが、hatena側でフラグが認識されていたので、XML的には互換性ある形にはなっている模様 )