HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2024
0217
ABATBeliever変数にあるXMLを処理したい2未解決


ABATBeliever

リンク

2024/2/17(Sat) 12:18:06|NO.101249

RSSリーダーを作りたいと思っています。
hspinetで取得して、utf8n2sjisでANSIにしたやつが変数に入っています。

この変数から<title>と<link>に挟まれた文字を取り出したく、試しに以下のコードを作りました。

notesel Nbuf//ここにhspinetでゲットしたデータが入っている repeat notemax//保存するとWindowsDefenderがうるさいので、note系で処理 noteget tmp,cnt//一行ずつ取る(<hoge>あああ</hoge>みたいに) tmp=strtrim(tmp, 3, '\t')//TABをなくす tmp=strtrim(tmp, 3)//空白をなくす if instr(tmp, 0, "<title>")!=-1{//もしも先頭が<title>なら split tmp, "<title>", tmp//(あああ</hoge>的な) tmp=tmp(1)//<title>でsplitして後をとる split tmp, "</title>", tmp//(あああ的な) tmp=tmp(0)//</title>でsplitして前をとる dialog "ゲット "+tmp } loop

さて、問題が二つあります

・改行コードがCRLFでない場合、notegetがうまくいかない
https://gigazine.net/news/rss_2.0/
みたいなページだと一気にたくさん釣れてしまう。
(<title>あ</title><hoge>a</hoge><title>い</title> →あ</title><hoge>a</hoge> → '')

・改行がそもそもない場合、うまくいかない
www.google.com
のhtmlみたいに、敷き詰められてる場合。

本当はXML専用の解釈装置があればいいのですが...
ActiveXやVBSは非推奨な今、
newcom oDom,"Microsoft.XMLDOM"

もできませんから...



この記事に返信する


沢渡

リンク

2024/2/17(Sat) 14:08:49|NO.101250

<title>と</title>が同じ行にあるとは限りませんし、いっそのこと改行コードを全削除してから
<title>と</title>に囲まれた部分を抽出するという方法では不味いでしょうか?

//仮にこんなデータにしてみる Nbuf="hogehoge<tItLE>\n" Nbuf+="あ い\nう \rえ \rお\r" Nbuf+="</TiTLE>hogehogehoge<tITle>\n" Nbuf+="かきく \rけ \rこ\r</tITle>\r" Nbuf+="hogehogehogehoge" tmp = Nbuf tmp=strtrim(tmp, 3, '\t')//TABをなくす tmp=strtrim(tmp, 3)//空白をなくす //改行コードを消す tmp=strtrim(tmp, 3, 0x0A) //LF tmp=strtrim(tmp, 3, 0x0D) //CR //"<"と">"で囲まれた文字を小文字に変換 flag=0 repeat strlen(tmp) x=peek(tmp,cnt) if x='<' : flag=1 : continue if x='>' : flag=0 : continue if flag { if x>='A' & x<='Z' : x+=0x20 : poke tmp,cnt,x //大文字は0x20を足すと小文字になる } loop //本編 p=0 : flag=0 : get="" repeat if flag { res=instr(tmp,p,"</title>") if res<0 : break get=strmid(tmp,p,res) dialog "ゲット "+get p+=res+8 flag=0 } else { res=instr(tmp,p,"<title>") if res<0 : break p+=res+7 flag=1 } loop dim tmp //後始末



ABATBeliever

リンク

2024/2/17(Sat) 15:12:44|NO.101251

すごい...()
ありがとうございます

いろいろな方法をこっちでも検討してて、早い方法あればまだ受け付けてます

ありがちうございました



記事削除

記事NO.パスワード
(質問が解決したスレッドは他の利用者に活用してもらうため、削除しないようお願いします)

NO.101249への返信

マスコット

好きなマスコットを選んでください。

名前

e-mail
HOME
  1. 初めて利用する方は、HSP3掲示板の使い方をお読みください。
  2. 不要部分の多い長いスクリプトの投稿は ご遠慮ください。
  3. 書き込みは自動改行されません。適度に改行を入れてください。
  4. スクリプトは小文字の<pre>〜</pre>で囲むと見やすく表示できます。

削除用パスワード

解決したら質問者本人がここをチェックしてください。

エラー発生時、再送信すると二重送信になることがあります。
回答が得られたら、お礼書き込み時に[解決]チェックしてください。
SPAM防止のためURLから始まる文章は投稿できません。
SPAM防止のため英文字のみの本文を投稿することはできません。

ONION software Copyright 1997-2023(c) All rights reserved.