golangでUPnPのポートフォワーディングをしてみる4−不定形のXMLをどうにかしたい [プログラミング]
これまでにGolangでXMLを細かく扱うには、UnmarshalXML()を定義すればいいと分かりました。
http://golang.rdy.jp/2015/11/08/anyxml/
不定形のXMLでもこれは使えると思っていたのですが、他のXMLにはそのままで使えないUnmarshalXML()であったのです。具体的にはxmlnsが邪魔してすんなりデータが取れないのです。というか、名前空間とか本来的にはデータを取ってくるだけのことではあんまり関係ないのですよね。面倒なことに定義されたあとすべてに絡んでくるので、無視するのにも手間がかかりそうですね。
サンプルとして提示されたもののXMLにはいちいちタグの属性として打ち込んでいるタイプだったので、それが問題にならなかったのでしょうけど、普通だったらいらないものとして抽出時に捨てられるものなんでしょう。
とりあえず実証コードを示します。ただ制限というか問題があります。
1. 最初のXMLを取りに行くSSDPの送受信は含まれず、コード内でURL決め打ちなので状況に合わせて書き直さないといけない。取ってくるコードは以下
https://miff.blog.so-net.ne.jp/2019-07-14-1
2. 特定のNECのAtermぐらいにしか使えないかもしれない。そして
SCPDURL
controlURL
eventSubURL
などのセットが複数ある場合は、最後のデータに上書きされる可能性がある(検証してないけど)
3. UnmarshalXMLに渡すデータ型がイマイチよくわからなかったので、SCPDURLなどを収納する変数をグローバルにして通しているので、ソースコードとして行儀が悪い。
さらにt *Tag を本質的に使っていない。本来ならこれを使ってSCPDURLなどを格納すればいいのだけれど、入れた後に使うことを考えると、特定の項目を検索したりするのが面倒だ。
1. の問題は自分がコードに落としていないだけでできないことはないのでしょうが、少々込み入ってしまう可能性があるので、目で見てLocation: ってところのURLを取ってきています。ここのところがSSDPの仕組みがどうなっているのかわからないので、別のクライアントが投げてくるメッセージをより分ける方法がわかってません。xmlUrlという変数を書き換えれば、任意の環境で動くかもしれません。
2, はルーターだと1組だけな場合が多そうなので気にする必要はないかもしれません。
3. はそもそもxmlパッケージの問題なのかもしれないので、UnmarshalXML()を使う限りは無理かもしれません。前提として不定形のXMLというものを前提としているので、そもそも定型なXMLを前提としているxmlパッケージの作りでは無理があるのかもしれません。
あと動作状況を知るためPrintfデバッグ的に埋め込んでいます。検証コードですので、最終的に得られる情報よりも過程が重要かと思われるので。
UnmarshalXMLが返してくるデータを手探りで抜き出しているので、先ほども言ったようにグローバル変数を関数の中に使うなど、Golangというかプログラミング言語的に悪手ではあるのは了解してください。その前にXMLの階層がまちまちというのが非常に問題なのだが、最近のルーターだとそういうこともないかもしれない。ただUPnPをサポートしているルーターで動かない例はそもそもXMLが腐っている可能性は高いので、対応アプリケーションに文句を言っても仕方ない可能性はある。
http://golang.rdy.jp/2015/11/08/anyxml/
不定形のXMLでもこれは使えると思っていたのですが、他のXMLにはそのままで使えないUnmarshalXML()であったのです。具体的にはxmlnsが邪魔してすんなりデータが取れないのです。というか、名前空間とか本来的にはデータを取ってくるだけのことではあんまり関係ないのですよね。面倒なことに定義されたあとすべてに絡んでくるので、無視するのにも手間がかかりそうですね。
サンプルとして提示されたもののXMLにはいちいちタグの属性として打ち込んでいるタイプだったので、それが問題にならなかったのでしょうけど、普通だったらいらないものとして抽出時に捨てられるものなんでしょう。
とりあえず実証コードを示します。ただ制限というか問題があります。
1. 最初のXMLを取りに行くSSDPの送受信は含まれず、コード内でURL決め打ちなので状況に合わせて書き直さないといけない。取ってくるコードは以下
https://miff.blog.so-net.ne.jp/2019-07-14-1
2. 特定のNECのAtermぐらいにしか使えないかもしれない。そして
SCPDURL
controlURL
eventSubURL
などのセットが複数ある場合は、最後のデータに上書きされる可能性がある(検証してないけど)
3. UnmarshalXMLに渡すデータ型がイマイチよくわからなかったので、SCPDURLなどを収納する変数をグローバルにして通しているので、ソースコードとして行儀が悪い。
さらにt *Tag を本質的に使っていない。本来ならこれを使ってSCPDURLなどを格納すればいいのだけれど、入れた後に使うことを考えると、特定の項目を検索したりするのが面倒だ。
1. の問題は自分がコードに落としていないだけでできないことはないのでしょうが、少々込み入ってしまう可能性があるので、目で見てLocation: ってところのURLを取ってきています。ここのところがSSDPの仕組みがどうなっているのかわからないので、別のクライアントが投げてくるメッセージをより分ける方法がわかってません。xmlUrlという変数を書き換えれば、任意の環境で動くかもしれません。
2, はルーターだと1組だけな場合が多そうなので気にする必要はないかもしれません。
3. はそもそもxmlパッケージの問題なのかもしれないので、UnmarshalXML()を使う限りは無理かもしれません。前提として不定形のXMLというものを前提としているので、そもそも定型なXMLを前提としているxmlパッケージの作りでは無理があるのかもしれません。
あと動作状況を知るためPrintfデバッグ的に埋め込んでいます。検証コードですので、最終的に得られる情報よりも過程が重要かと思われるので。
UnmarshalXMLが返してくるデータを手探りで抜き出しているので、先ほども言ったようにグローバル変数を関数の中に使うなど、Golangというかプログラミング言語的に悪手ではあるのは了解してください。その前にXMLの階層がまちまちというのが非常に問題なのだが、最近のルーターだとそういうこともないかもしれない。ただUPnPをサポートしているルーターで動かない例はそもそもXMLが腐っている可能性は高いので、対応アプリケーションに文句を言っても仕方ない可能性はある。
タグ:Golang
Twitterまとめ投稿 2019/07/23 [Twitter]
carbonhydrat『PS4のバックアップで受け側のSSDをMacでフォーマットしたらハマった話。』名前を変えようと思ったがいい案がなかった..|https://t.co/s0GMzWSYf207/22 12:08
2019-07-23 05:01
コメント(0)
PS4のバックアップで受け側のSSDをMacでフォーマットしたらハマった話。 [ソフトウェア]
基本的にPS4用のメディアのフォーマットをMacでフォーマットしたらいけません。結果から言うとGPTでフォーマットされてしまうから。そうなるとWindowsのGUIからでも直せない。
PS4のバックアップ先はパソコンでフォーマットしてあげないといけないという話は前にしました。なんでかPS4内で完結できていないのね。まぁそれはそれでExtFATにすればいいという話なのですが、MacでExtFATにしてもPS4では使えないという話がありまして、MacでフォーマットしてしまうとWindowsでもGUIでは直せなくなってしまうので注意が必要です。
問題はPS4がMBRという形式のメディアにしか対応していないため。HDDやSSDは古いMBRと、新しめのGPTという形式の二つがあり、一回GPTにしてしまうとMBRにするにはGUIのメニューからは直せないという状況になっています。具体的にいうと「ディスクの管理」で「MBRディスクに変換」が淡色表示になっていて使えない状態なのです。
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12160380177
このように使えないことが報告されています。
下のようなツールを使うか、Windowsに付いているdiskpartコマンドを使うしかなさそうです。MacでMBRにするってのはちょっとわからない(後記:前はMBRの設定にできたけど、今は選択できずGPT一択)。
https://jp.easeus.com/partition-manager/how-to-delete-efi-system-partition.html
そんでいらないGPT用のパーティションを削除する。システム用のパーティションは削らないように。
https://qiita.com/aoi70/items/75f61ec679c1c1b71f8e
そうすれば、あとはWindowsの「ディスクの管理」からMBRのディスクを作るのを選択して、ExtFATでフォーマットすれば使えるようになります。面倒くさいなあ。これだからMacを使うのって汎用性がないんだよなぁ。
PS4のバックアップ先はパソコンでフォーマットしてあげないといけないという話は前にしました。なんでかPS4内で完結できていないのね。まぁそれはそれでExtFATにすればいいという話なのですが、MacでExtFATにしてもPS4では使えないという話がありまして、MacでフォーマットしてしまうとWindowsでもGUIでは直せなくなってしまうので注意が必要です。
問題はPS4がMBRという形式のメディアにしか対応していないため。HDDやSSDは古いMBRと、新しめのGPTという形式の二つがあり、一回GPTにしてしまうとMBRにするにはGUIのメニューからは直せないという状況になっています。具体的にいうと「ディスクの管理」で「MBRディスクに変換」が淡色表示になっていて使えない状態なのです。
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12160380177
このように使えないことが報告されています。
下のようなツールを使うか、Windowsに付いているdiskpartコマンドを使うしかなさそうです。MacでMBRにするってのはちょっとわからない(後記:前はMBRの設定にできたけど、今は選択できずGPT一択)。
https://jp.easeus.com/partition-manager/how-to-delete-efi-system-partition.html
そんでいらないGPT用のパーティションを削除する。システム用のパーティションは削らないように。
https://qiita.com/aoi70/items/75f61ec679c1c1b71f8e
そうすれば、あとはWindowsの「ディスクの管理」からMBRのディスクを作るのを選択して、ExtFATでフォーマットすれば使えるようになります。面倒くさいなあ。これだからMacを使うのって汎用性がないんだよなぁ。
Twitterまとめ投稿 2019/07/22 [Twitter]
carbonhydratゆうちょとかんぽ、不適切販売でいよいよバレる「ヤバすぎる問題」 @moneygendai https://t.co/wiuhfpXdMj #マネー現代 小泉のやった郵政民営化は良かったとも悪かったとも特に言えないが、国からウミを出した感はある07/21 11:08 carbonhydrat「安倍辞めろ」コール=自民、動員1万人-東京・秋葉原【19参院選】:時事ドットコム https://t.co/xkEzYArOBt @jijicom 安倍が嫌いな人がこんなにも多くても、支持率が下がらないという保守派のいい加減さ07/21 11:10 carbonhydratBPNAVI| 誰もが「かわいい」と思えるフィギュアを目指して…女性のためのかわいいフィギュア『Q posket』の魅力 https://t.co/pUXep99IU3 目鼻立ちがあんまり可愛くないなぁ。好き嫌いはちょっと分かれそう。07/21 11:15 carbonhydrat『golangでUPnPのポートフォワーディングをしてみる3−不定形のXMLをどうにかしたい』名前を変えようと思ったがいい案がなかった..|https://t.co/ZXfAxkeUe407/21 18:58
2019-07-22 05:01
コメント(0)
golangでUPnPのポートフォワーディングをしてみる3−不定形のXMLをどうにかしたい [プログラミング]
前回、とりあえずXMLをパースする方針ができました。できたのですが、ルーターのXMLには数々の問題があり一筋縄にはいきません。問題を挙げておきます。
1. XMLが定型ではなく、ルーターによって構造がまちまち。
2. XMLがUTF-8でない場合があって読み込み時にエラーが出る。
というかなりクソッタレな状況になっていて、まともにUPnPを使ってポートフォワーディングができる状況ではありません。各メーカーが決まりを守っていれば問題ないのですが、やりたい放題でまともに動く状況になってはいません。
自分の状況を述べますと、無線LANルーターを二つ見ました。NECのAtermとIOデータのWN-G300Rです。AtermはXMLの構造がどうにも深くて、Golangでは構造体を規定してのデータ取り込みが困難でした。このネスト構造が本当にXMLのフォーマットとして規定されているものなのか疑問に思い、他のルーターを見てみました。
WN-G300Rを見てみると、ネストもそんなに深くなくシンプルだったので、Atermの深さがちょっと異常というのが何となく分かりました。その後のパースを比較的シンプルなXMLだったWN-G300Rに変えて検証してみていると、UTF-8以外のコードが含まれており、やり方によってはGolangで以下のようなエラーが出てしまうのでした。
そもそもXMLのURLをブラウザでアクセスしても、パーシングでエラーが出ていたのでおかしいなとは思ってはいたのです。
IOデータの作った技術者が日本語エディタかなんかで編集してUTF-8の設定にしていなかったんですね、たぶん。そうじゃないとUTF-8外のデータが入り込むということは考えにくい。技術者だったら日本語の取り扱いぐらいは慎重にしておくべきですよね。ちょっと恥ずかしい。
XMLの形がちょっと独自すぎたり、そもそもXMLの体をなしていなかったりするので、正直言ってUPnPをポートフォワーディングで使うのは厳しい。問題を乗り越えるのにすべきことはいくつかあり、それを全部乗り越えるには正規の手続きではやりにくいと思われます。やれることとしては
・XMLにUTF-8以外のキャラクターが出てきても無視できるようにする。
・XMLの構造はあてにできないので、タグを一つ一つクロールして該当の部分だけ抜き出す。
ぐらいのものでしょうか。ポートフォワードが可能でなくても、決め打ちでメッセージを発行できるところはあるものの、ルーターごとに違う設定になっている部分はやっぱりXMLから抽出しないとできないので、パーシングは必要不可欠なのです。というか、完全に開発者のXMLの理解不足がアダとなっているなこりゃ。
そんなわけで、UPnPが可能としているルーターでも、UPnPをイネイブルにしたところでちっとも反応しないという状況が眼に浮かぶわけで。だから、あるソフトを使ってUPnPを有効にしたルーターで上手くいかないとしても何の疑いもなく動かないということはあり得るということをみなさんにも知っていただきたい。
とりあえずAtermのXMLはUTF-8ではあるので、それで動くかどうか確かめてみましょう。というか、こんな適当すぎる杜撰な仕様のソフトは一般的なんでしょうかね。まぁUPnPの成り立ちが微妙なのは否めませんけど。
1. XMLが定型ではなく、ルーターによって構造がまちまち。
2. XMLがUTF-8でない場合があって読み込み時にエラーが出る。
というかなりクソッタレな状況になっていて、まともにUPnPを使ってポートフォワーディングができる状況ではありません。各メーカーが決まりを守っていれば問題ないのですが、やりたい放題でまともに動く状況になってはいません。
自分の状況を述べますと、無線LANルーターを二つ見ました。NECのAtermとIOデータのWN-G300Rです。AtermはXMLの構造がどうにも深くて、Golangでは構造体を規定してのデータ取り込みが困難でした。このネスト構造が本当にXMLのフォーマットとして規定されているものなのか疑問に思い、他のルーターを見てみました。
WN-G300Rを見てみると、ネストもそんなに深くなくシンプルだったので、Atermの深さがちょっと異常というのが何となく分かりました。その後のパースを比較的シンプルなXMLだったWN-G300Rに変えて検証してみていると、UTF-8以外のコードが含まれており、やり方によってはGolangで以下のようなエラーが出てしまうのでした。
panic: XML syntax error on line 15: illegal character code U+0018
そもそもXMLのURLをブラウザでアクセスしても、パーシングでエラーが出ていたのでおかしいなとは思ってはいたのです。
XML パースエラー: 整形式になっていません。 URL: http://192.168.1.202:49152/wps_device.xml 行番号: 11, 列番号: 18:bLy -----------------^
IOデータの作った技術者が日本語エディタかなんかで編集してUTF-8の設定にしていなかったんですね、たぶん。そうじゃないとUTF-8外のデータが入り込むということは考えにくい。技術者だったら日本語の取り扱いぐらいは慎重にしておくべきですよね。ちょっと恥ずかしい。
XMLの形がちょっと独自すぎたり、そもそもXMLの体をなしていなかったりするので、正直言ってUPnPをポートフォワーディングで使うのは厳しい。問題を乗り越えるのにすべきことはいくつかあり、それを全部乗り越えるには正規の手続きではやりにくいと思われます。やれることとしては
・XMLにUTF-8以外のキャラクターが出てきても無視できるようにする。
・XMLの構造はあてにできないので、タグを一つ一つクロールして該当の部分だけ抜き出す。
ぐらいのものでしょうか。ポートフォワードが可能でなくても、決め打ちでメッセージを発行できるところはあるものの、ルーターごとに違う設定になっている部分はやっぱりXMLから抽出しないとできないので、パーシングは必要不可欠なのです。というか、完全に開発者のXMLの理解不足がアダとなっているなこりゃ。
そんなわけで、UPnPが可能としているルーターでも、UPnPをイネイブルにしたところでちっとも反応しないという状況が眼に浮かぶわけで。だから、あるソフトを使ってUPnPを有効にしたルーターで上手くいかないとしても何の疑いもなく動かないということはあり得るということをみなさんにも知っていただきたい。
とりあえずAtermのXMLはUTF-8ではあるので、それで動くかどうか確かめてみましょう。というか、こんな適当すぎる杜撰な仕様のソフトは一般的なんでしょうかね。まぁUPnPの成り立ちが微妙なのは否めませんけど。
タグ:Golang
Twitterまとめ投稿 2019/07/21 [Twitter]
carbonhydrat『golangでUPnPのポートフォワーディングをしてみる2−不定形のXMLをどうにかしようとする』名前を変えようと思ったがいい案がなかった..|https://t.co/mLzwAtKtmX07/20 10:51 carbonhydratRT @Beriozka1917: 北海道での安倍首相街宣に際して、判例上も問題のない肉声で「安倍はやめろ」「増税反対」と唱えた男女を、警察が法的根拠なく強制排除した件が問題なっているが、HTBの報道により「年金100年安心プランどうなった?」というプラカを無言で掲げた女性も排…07/20 16:56 carbonhydratRT @iwakamiyasumi: このご指摘は、まったく正しい。国民にとっての関心事と、安倍総理の関心事は見事にすれ違っている、ということ。しかも、理解し難いことに、彼は愛国者気取りで、「日本を取り戻す」などとのたまってきたが、米国から主権を取り戻すことに一切関心がない。属…07/20 16:56 carbonhydratデーブ・スペクター氏 宮迫と契約解消の吉本興業に「なんで金曜日のこの時間に…」― スポニチ Sponichi Annex 芸能 https://t.co/6t3v6WPa9f やっぱ吉本は企業としてクソだし、宮迫は人間としてクソだ… https://t.co/XMvI1X2Xcm07/20 21:17
2019-07-21 05:01
コメント(0)
golangでUPnPのポートフォワーディングをしてみる2−不定形のXMLをどうにかしようとする [プログラミング]
ルーターの持っているXMLが不定形なので、XMLとしては悪手なのではと思わざるを得ないのだけれども、DTDがあるわけでもなさそうなので、XMLの中を検索する他なさそうな気がします。構造化されているXMLをパースする例はいくらでもあるけど、不定形のXMLをどうにかするという記事がこれまたない。ググり方が悪いのかな?
一番雑音が少なさそうなコードがこれあたりで
https://hogesuke.hateblo.jp/entry/2014/08/25/012114
やっぱり構造体ときちんと定義しないといけないみたい。
Unmarshal()が出力するのはinterface{}で、具体的には構造体のようです。ふつう構造体自体は検索して使うものでもないので、XMLの型を作っておいてそこに当てはめるという方法は当然だったりします。実際、XMLからデータを引っ張ってくるサンプルはほぼ全部構造体を定義していますね。まぁXHTMLみたいな不定形なXMLも存在するので、そこのところを拾えない作りになっていると汎用性がない気がするんですがね。
Golangの構造体の検索を調べた方が良さそうな気がしますが、なんかなさそうな気がするんだよなぁ。LL言語あたりだと言語仕様か標準ライブラリのあたりにありそうな気はする。ググっていたらJSONをUnmarshalするということが書いてあって、JSONだと不定形なことも多いだろうと思って読んでみた。
https://www.kaoriya.net/blog/2016/06/25/
ゆるふわ、ねぇ。XMLでもできそうだなと思ったができなかった。
具体的には空のinterface{}にUnmarshal()で入れたんだけど、nilが返ってきました。よく読んだらきちんと構造体を作らないと空で返すよと書いてありました。形式は合っていてもvalに適合しないデータは破棄されます、って書いてあった。
http://golang.jp/pkg/xml
ううむ、一つずつ要素をクロールして行くような方法でいいからないのかな? でも、英語の文章を読んでいくのはしんどい。日本のリファレンスだってサンプルコードがない関数なんて暗闇の中で手探りしているようなもんだし。あんまり試行錯誤はしたくないんだよね。
不定形のXMLを扱う方法があった。
http://golang.rdy.jp/2015/11/08/anyxml/
UnmarshalXML()を独自に定義すればいいらしいんだが、サンプルではUnmarshalXML自体は呼んでない。Golangの仕組みとライブラリの問題なんだろうけど、いまいち細かくはよくわからない。
xml.Marshaler と xml.Unmarshaler interfaceを明示的に定義するっていうのがあったけど、別にこれはしなくてもいいってことなのかな。
https://qiita.com/ono_matope/items/70080cc33b75152c5c2a#xmlmarshaler-%E3%81%A8-xmlunmarshaler-interface
とにかく一つずつ拾っていく方法をとれるっぽいので、forで該当の情報を取れるまでぐるぐる回してみれば良さそうな気がする。そうなるとUnmarshalXMLは使わないでできるのかもしれない。使った方が楽かな? よくわからないけど実装できればいいや。
http://golang.rdy.jp/2015/11/08/anyxml/
のUnmarshalXML()だけをとって、情報を構造体にぶっこみたかったんだけど上手くいかず。
MarshalXML()もコピペして入れ込んだんだけど、内容が重複したり入れ子部分がざっくり無くなっていたり、まともに動いてくれていなかった。これは上のコードに自分が取ってきたXMLぶっ込んで試してみた方が良さそうだな。
やっぱり自分が取ってきたXMLを喰わせたら、階層を無視して途中でぶっちぎれて途中から続いた。汎用性がないらしい。あ〜自作かぁ。プログラミングするの面倒くさいなぁw。始めてしまえば楽しくなってきたりはしたりもするのだが、自分の用をなすものを作っても汎用性のあるコードは書きそうもないな。
とにかく、普通の正攻法ではできないとわかったので、地道にカスタマイズをかけるようにやるしかないかなと思ったり。なんとなくやり方の方針はわかったので、あとは似たようなコードとリファレンスを首っぴきにしてやるしかないかな。XMLだからもうちっとやり方が提供されていると思ったけど、薄っぺらなそこはGolangであるってことなんだろうな。
一番雑音が少なさそうなコードがこれあたりで
https://hogesuke.hateblo.jp/entry/2014/08/25/012114
やっぱり構造体ときちんと定義しないといけないみたい。
Unmarshal()が出力するのはinterface{}で、具体的には構造体のようです。ふつう構造体自体は検索して使うものでもないので、XMLの型を作っておいてそこに当てはめるという方法は当然だったりします。実際、XMLからデータを引っ張ってくるサンプルはほぼ全部構造体を定義していますね。まぁXHTMLみたいな不定形なXMLも存在するので、そこのところを拾えない作りになっていると汎用性がない気がするんですがね。
Golangの構造体の検索を調べた方が良さそうな気がしますが、なんかなさそうな気がするんだよなぁ。LL言語あたりだと言語仕様か標準ライブラリのあたりにありそうな気はする。ググっていたらJSONをUnmarshalするということが書いてあって、JSONだと不定形なことも多いだろうと思って読んでみた。
https://www.kaoriya.net/blog/2016/06/25/
ゆるふわ、ねぇ。XMLでもできそうだなと思ったができなかった。
具体的には空のinterface{}にUnmarshal()で入れたんだけど、nilが返ってきました。よく読んだらきちんと構造体を作らないと空で返すよと書いてありました。形式は合っていてもvalに適合しないデータは破棄されます、って書いてあった。
http://golang.jp/pkg/xml
ううむ、一つずつ要素をクロールして行くような方法でいいからないのかな? でも、英語の文章を読んでいくのはしんどい。日本のリファレンスだってサンプルコードがない関数なんて暗闇の中で手探りしているようなもんだし。あんまり試行錯誤はしたくないんだよね。
不定形のXMLを扱う方法があった。
http://golang.rdy.jp/2015/11/08/anyxml/
UnmarshalXML()を独自に定義すればいいらしいんだが、サンプルではUnmarshalXML自体は呼んでない。Golangの仕組みとライブラリの問題なんだろうけど、いまいち細かくはよくわからない。
xml.Marshaler と xml.Unmarshaler interfaceを明示的に定義するっていうのがあったけど、別にこれはしなくてもいいってことなのかな。
https://qiita.com/ono_matope/items/70080cc33b75152c5c2a#xmlmarshaler-%E3%81%A8-xmlunmarshaler-interface
とにかく一つずつ拾っていく方法をとれるっぽいので、forで該当の情報を取れるまでぐるぐる回してみれば良さそうな気がする。そうなるとUnmarshalXMLは使わないでできるのかもしれない。使った方が楽かな? よくわからないけど実装できればいいや。
http://golang.rdy.jp/2015/11/08/anyxml/
のUnmarshalXML()だけをとって、情報を構造体にぶっこみたかったんだけど上手くいかず。
MarshalXML()もコピペして入れ込んだんだけど、内容が重複したり入れ子部分がざっくり無くなっていたり、まともに動いてくれていなかった。これは上のコードに自分が取ってきたXMLぶっ込んで試してみた方が良さそうだな。
やっぱり自分が取ってきたXMLを喰わせたら、階層を無視して途中でぶっちぎれて途中から続いた。汎用性がないらしい。あ〜自作かぁ。プログラミングするの面倒くさいなぁw。始めてしまえば楽しくなってきたりはしたりもするのだが、自分の用をなすものを作っても汎用性のあるコードは書きそうもないな。
とにかく、普通の正攻法ではできないとわかったので、地道にカスタマイズをかけるようにやるしかないかなと思ったり。なんとなくやり方の方針はわかったので、あとは似たようなコードとリファレンスを首っぴきにしてやるしかないかな。XMLだからもうちっとやり方が提供されていると思ったけど、薄っぺらなそこはGolangであるってことなんだろうな。
タグ:Golang
Twitterまとめ投稿 2019/07/20 [Twitter]
carbonhydratRT @Mkandhi091: こういう人がまさにファシズムを引き寄せている。この皮肉がまさに戦前に起きたことだよ。脅威を外に置いて平和のために戦争を始めたあの時代。この上から人を罵倒し脅す態度が前から書いてるけど権威主義者の典型。このまま改憲されたらこの人たちの天国になるよ。…07/19 15:25 carbonhydratRT @galaxy14141356: 京アニが破壊されたというオタク的なつらさよりも、頑張って努力して創作に人生かけたクリエイターやその作品が、一人の狂人による避けられないアクシデントで滅茶苦茶にされたという理不尽さと胸糞さによるダメージが大きいな07/19 15:29 carbonhydratRT @kumikokatase: 【#ネット中傷】 このケースは、ツイッターで中傷投稿をした人物を私が訴えたものです。 ネット中傷であっても、裁判で約270万円の損害賠償が認められた事例として、よく覚えておいて下さい。なお、この損害賠償が認められたツイートをツイッター社は「ル…07/19 15:31 carbonhydratRT @mipom11: 首相なら、野党批判のセコい演説ばかりせず、横綱の振る舞いを見せて欲しいもの。しかも震災時の民主党の対応を批判し「あの悔しさが原点!」なんて言っていうが、あの時自民は政権奪取に必死で、震災対策に全く協力しなかった。どの口でそんな嘘をつけるのか?「恥を知れ…07/19 15:33
2019-07-20 05:01
コメント(0)
Twitterまとめ投稿 2019/07/19 [Twitter]
carbonhydratRT @tacowasabi0141: ここ20~30年の日本企業 土地と株を転がせば事業なんてどうでもいいや ↓ バブル崩壊 ↓ 人減らせばいいや ↓ 仕事回らず ↓ 非正規雇えばいいや ↓ 幹部候補足らず ↓ 即戦力とればいいわ ↓ 少子化で一般社員も足りない ↓ 外国人…07/18 07:57 carbonhydratイーロンマスクのは他で目にしてはいたけど、脳に直で線を埋め込むとは思ってなかった。なんか士郎正宗っぽくなってきたなぁ https://t.co/ylaR6DUaBD07/18 08:05 carbonhydratRT @satake_take: オリンピックやめろJP https://t.co/LQVyV3yaog07/18 08:06 carbonhydratUSB Type-Cケーブルにはなぜたくさんの種類があるのか、どうやって見分ければいいのか? - GIGAZINE https://t.co/J3to2XNwac コネクタの物理形状が同じなだけに、誤動作されるときついなぁ07/18 08:34 carbonhydrat『ホモショタと燃える京アニ』名前を変えようと思ったがいい案がなかった..|https://t.co/6vdNCxBeeX07/18 17:36 carbonhydrat「東京五輪中は東京への来訪は控えて欲しい」というのを聞いたけど…「もはやギャグ」「東京逃げ出し田舎で過ごすつもりです」と批判殺到 - ツイナビ | ツイッター(Twitter)の話題まとめ… https://t.co/8nXBhugMQf07/18 20:18 carbonhydratRT @MinatoFumituki: ワコムの液タブほぼ全部買った身から言わせてもらうと、とりあえず新規で液タブ買うなら、cintiq16を買っておけば問題ないよ。(cintiqPro16ではない。安いcintiq16の方)向こう3年は戦えるレベルで安定してるよ。現行機種の中…07/18 20:19 carbonhydratRT @ppsh41_1945: 演説中、乱入してきたトランプ支持者にオバマ氏が「我々の国は表現の自由を尊重する。彼に敬意を」と聴衆に呼び掛ける動画。 「こんな人達に私は負けない!」と逆上したり、警察が市民の排除に乗り出す安倍首相の事例とは雲泥の差だな。 民主主義国家とは本…07/18 20:21 carbonhydratRT @TomoMachi: 山本太郎に「死ね」と野次っても放置、安倍総理に「やめろ」と野次ると警察によって排除。これは明らかに不当だが、問題は大手マスコミが北海道の警察の排除の法的根拠を問い質さないこと。ネットメディアが行けばいいのに。ハフィントンポストさん、アメリカの本部だ…07/18 20:21 carbonhydratRT @Beriozka1917: 反対派に「クソ左翼、死ね」と悪罵された山本太郎氏は、怒っても良いのに「死にたくなる世の中を変えたいために私は立候補してる。みんなに生きていていただきたい」と、見事な切り返しで応えた。 一方、言論の自由に基づいて安倍首相に「やめろ」と声を上げ…07/18 20:22 carbonhydratRT @quitamarco: これがヤバいのは、暴動煽動でも治安紊乱でもなく、単にある政治主張への非暴力の対抗言論(言論の自由)を表明しただけで公権力によって排除されるのならば、ツイッターやFBで「安倍やめろ!」と書くこともまた「排除」される理由になるという、法の平等ではなく…07/18 20:22 carbonhydratRT @shiikazuo: 維新の会。使途を公開している現職国会議員全員が自分あてに領収書を出し、自分の政治団体に寄付していたことがわかりました。受け取っていた文通費の7割強、約5.7億円に及びます。これが「身を切る改革」とは驚いた。こんな人たちに大阪・日本の未来は託せません…07/18 20:23 carbonhydratRT @mt3678mt: これを見たらわかるように、安倍首相のオツムは相当イカレテきてますからね。参院選、自民党に勝たせたらめちゃくちゃやばいことになりますよ。 【「お父さんの恋人」とは? 首相、投票呼び掛けで】(共同通信) - Yahoo!ニュース https://t.co…07/18 20:24
2019-07-19 05:01
コメント(0)
ホモショタと燃える京アニ [徒然]
ジャニー喜多川が死んで褒め称えられていたが、現実的にはホモショタのおじいちゃんだったんだもんね。その上、ジャニーズ事務所をやめた人たちをテレビから干すとかものすごくえげつない人だったわけだ。
元スマップの3人の仕事を干しているとジャニーズ事務所が独禁法に触れた。まぁ悪いことをしていたら罰を受けるのは必至だろうが、おそらくジャニーが糸を引いていたのは間違いない。というか、日本のテレビはホモショタの件を全く伝えないんだよな。どんだけジャニーズに依存しているのか知らないけど、いわゆる大人の事情によって真実が伝えられないというのはテレビには良くあることではあるんだけどね。
京アニに基地外が入って、ガソリンかなんか撒いて燃やした。またオタクがなんとか言われるんだろうけど、オタクとかそういうの関係ないぐらい逸脱したことですから。むしろオタクの方が凶悪犯罪は少ないんじゃないかと思うんだけど、こういうことがあるとテレビは騒ぎ立てるよね。そんでオタク趣味にも文句を言いだすと。というか、現在の世界は昔ほどオタク趣味はマイナーではないからね。
これまでも色んなものが原因として取り立たされてきたけど、全くサンプルが足りない状態で断罪をしようとするテレビなどのマスコミの愚かさは散々見てきた。なんというかステレオタイプである上に頭の悪い立証の仕方をしているので、SNSですぐに叩かれるテレビの今の状況はいくらか健全なんだと思う。
まだ京アニで捕まった奴の言い分は出てきていないのでなんとも言えないけど、全く京アニを知らない人ではないわな。変なこと言わないといいけど、まぁこんなことしている時点で変だからどうしようもないか。
松本人志の消したツイートではないが、たくさん人がいると不良品みたいな考えを持つ人間が出てきてしまうのはいくらか仕方ないことなのかもしれないとは思う。ぶっ壊れた考えを持つ人は少なくないけど、他の人に迷惑をかけるかどうかは分かれ目になるんじゃないかと思ったりはする。発覚するかどうかは、実際のポテンシャルとはかなり違う気はする。
ある業界にいた時、年明けの3ヶ月に4人も業務で死んで、それ自体はテレビに少しも出ていなかった。まぁ業務上で人死が出る分には、必要悪だと言わんばかりだったが、あまりにも悪条件すぎて仕事を辞めた。ニュースで一人死んだだけで何日もやることは少なくないが、仕事で不運な事故で死んだ場合は全くマスコミに出ない。まぁ建築業とかもそうかもしれないけど、そこまでひどくないだろうしな。
テレビは一般性のあることを放送したいのか、一般性のないことを放送したいのか、よくわからないことが多い。具体的には視聴率が出ればいいのと、関係者の利害関係によって揉み消されたり、目を引くために必要以上に報道されていたりするわけで。
まぁひどいことに巻き込まれたくはないが、テレビでいくら報道したところでなくならないものは無くならないし、見たくなくても知っておかなければならないことはたくさんあるということだ。
元スマップの3人の仕事を干しているとジャニーズ事務所が独禁法に触れた。まぁ悪いことをしていたら罰を受けるのは必至だろうが、おそらくジャニーが糸を引いていたのは間違いない。というか、日本のテレビはホモショタの件を全く伝えないんだよな。どんだけジャニーズに依存しているのか知らないけど、いわゆる大人の事情によって真実が伝えられないというのはテレビには良くあることではあるんだけどね。
京アニに基地外が入って、ガソリンかなんか撒いて燃やした。またオタクがなんとか言われるんだろうけど、オタクとかそういうの関係ないぐらい逸脱したことですから。むしろオタクの方が凶悪犯罪は少ないんじゃないかと思うんだけど、こういうことがあるとテレビは騒ぎ立てるよね。そんでオタク趣味にも文句を言いだすと。というか、現在の世界は昔ほどオタク趣味はマイナーではないからね。
これまでも色んなものが原因として取り立たされてきたけど、全くサンプルが足りない状態で断罪をしようとするテレビなどのマスコミの愚かさは散々見てきた。なんというかステレオタイプである上に頭の悪い立証の仕方をしているので、SNSですぐに叩かれるテレビの今の状況はいくらか健全なんだと思う。
まだ京アニで捕まった奴の言い分は出てきていないのでなんとも言えないけど、全く京アニを知らない人ではないわな。変なこと言わないといいけど、まぁこんなことしている時点で変だからどうしようもないか。
松本人志の消したツイートではないが、たくさん人がいると不良品みたいな考えを持つ人間が出てきてしまうのはいくらか仕方ないことなのかもしれないとは思う。ぶっ壊れた考えを持つ人は少なくないけど、他の人に迷惑をかけるかどうかは分かれ目になるんじゃないかと思ったりはする。発覚するかどうかは、実際のポテンシャルとはかなり違う気はする。
ある業界にいた時、年明けの3ヶ月に4人も業務で死んで、それ自体はテレビに少しも出ていなかった。まぁ業務上で人死が出る分には、必要悪だと言わんばかりだったが、あまりにも悪条件すぎて仕事を辞めた。ニュースで一人死んだだけで何日もやることは少なくないが、仕事で不運な事故で死んだ場合は全くマスコミに出ない。まぁ建築業とかもそうかもしれないけど、そこまでひどくないだろうしな。
テレビは一般性のあることを放送したいのか、一般性のないことを放送したいのか、よくわからないことが多い。具体的には視聴率が出ればいいのと、関係者の利害関係によって揉み消されたり、目を引くために必要以上に報道されていたりするわけで。
まぁひどいことに巻き込まれたくはないが、テレビでいくら報道したところでなくならないものは無くならないし、見たくなくても知っておかなければならないことはたくさんあるということだ。