33-Nagata / kadai

0 stars 0 forks source link

ビデオ通話機能の動作確認 #6

Open 33-Nagata opened 9 years ago

33-Nagata commented 9 years ago

ローカルではつながりません。 http://33-nagata.sakura.ne.jp/index.html で稼働中。 SkyWayのAPIキーを書き換えて、他サーバーに上げても大丈夫です。

gs-teacher commented 9 years ago

レビュー担当の増子です。

ビデオ通話機能に翻訳機能までついて、素晴らしい! こういう発想でどんどんやりたいことに対して技術で解決していくことで、自分のできることが広がっていくと思うので、すごく良いです!! さて、ソースコードとしては問題ないと思いますが、一点気になったのが、get_translation.phpの中で帰ってきたxmlを文字列として分解しておりますが、「SimpleXML」などを使用したほうがより確実に返却されたテキストを絞り込むことができると思います。

33-Nagata commented 9 years ago

最初はSimpleXMLを使おうとしたのですが、返ってきたXMLに名前空間が設定されており、その処理がわからなかったため、文字列として処理しました。 XMLの扱い方をもう少し勉強してから挑戦してみます。

gs-teacher commented 9 years ago

気づくの遅くなりました。もしかしてもう解決しちゃいましたでしょうか? 名前空間が設定されている場合には、下記URLのように一手間必要となります。 http://liginc.co.jp/programmer/archives/5317

33-Nagata commented 9 years ago

残念ながら、まだ解決していません。 調べてみたら、前回使っていた方法は古いやり方でした。トークンを使用する新しい推奨の方法に変えてみたら、問題なくできました。

ご紹介いただいた情報は私も読んでいて、それを読んでから名前空間なのかと思っていたのですが、もしかしたら違うかもしれません。 返ってきたデータで必要な部分の構造は下記のようになっているのですが、m:propertiesの下にd:Textとm:typeがあり、これをどのように処理したらいいのかわからない状況です。

取り出したい部分/d:Text /m:properties
33-Nagata commented 9 years ago

<feed xmlns:base="https://api.datamarket.azure.com/Data.ashx/Bing/MicrosoftTranslator/v1/Translate&quot; xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices&quot; xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata&quot; xmlns="http://www.w3.org/2005/Atom&quot;&gt; <entry> <content type="application/xml"> <m:properties> <d:Text m:type="Edm.String">取り出したい情報</d:Text> </m:properties> </content> </entry> </feed>

gs-teacher commented 9 years ago

遅くなってすみません!

この場合、名前空間が「d」と「m」の2つがあります。 まずはcontentの中のmという名前空間のオブジェクトを取り出し、そのオブジェクトからdという名前空間のオブジェクトを取り出すと、欲しい情報が取れました! $xml_strはXMLが入っていると仮定して、、、

$xml = simplexml_load_string($xml_str);
$nameSpaces = $xml->getNamespaces(true);
$prop = $xml->entry->content->children($nameSpaces['m']);
$dNode = $prop->children($nameSpaces['d']);
print_r($dNode->Tex);`
33-Nagata commented 9 years ago

助かりました、ありがとうございます!