【質問】秀丸メールマクロでXMLファイル出No.40573
ダヴィンチ1958 さん 11/05/23 22:59
 

2011/05/23(月) 22:50:35

こんにちは、ダヴィンチ@ユーザーです。

秀丸メールのマクロでXMLファイルを出力するプログラムを
書いています。
XMLデータとして"<",">","&"をそれぞれ"&lt;","&gt;","&amp;"に
変換する自前の関数を作りましたがほかに抜けもれがあると困りますし
変換スピードの点も気になります。
他にWindows的な標準の対応があればどなたか紹介して
頂けますか。
できれば関数一発でXmlConvertString(from, to)みたいのが
あるといいです。
宜しくお願いします。

[ ]
RE:40573 【質問】秀丸メールマクロでXMLNo.40575
秀まるお2 さん 11/05/24 10:22
 
 XMLに変換する方だけであれば、"<"、">"、"&"の3つだけエンコードすればよ
かったと思います。

 逆の変換をするとなるともっと大量にあって大変ですけども。

> 変換スピードの点も気になります。

 "<"等の文字は普通の文章にはそんなに大量に入ってくることは無いと思うの
で、速度的にはマクロで処理してもそんなに遅くは無いと思います。むしろ、外
部のDLL呼び出しとかで処理したとしても、最終的に秀丸マクロの文字列関係の
処理を通るので、結局同じくらいの速度にしかならないと思います。

 しいて外部dllで処理させるとしたら、hmjre.dllのReplaceRegular関数でやる
方法もあるかなぁと思います。

> 他にWindows的な標準の対応があればどなたか紹介して
> 頂けますか。

 今ちょっとgoogleで"xml windows api"で検索したら、Msxml2.DOMDocumentっ
ていうオブジェクトがあって、それを例えば秀丸マクロのcreateobject/
callmethodで呼び出して使えばいいのかなぁと思いました。

 具体的にどういうことが出来るのかまでは調べませんでしたけども。

 Msxml2.XMLHTTPってオブジェクトを使っていろいろやる例は、実はIKKIさんが
作成されたマクロがありまして、それが一番参考になります。(という僕も、大
変参考にさせていただいてます)

[ ]
RE:40575 【質問】秀丸メールマクロでXMLNo.40578
秀まるお2 さん 11/05/24 10:58
 
>  XMLに変換する方だけであれば、"<"、">"、"&"の3つだけエンコードすればよ
> かったと思います。

 秀丸メールの中でのテキスト形式からHTML形式に変換する処理の中では、

    if( *pch == '<' ) {
        strHtmlBody += "&lt;";
    } else if( *pch == '>' ) {
        strHtmlBody += "&gt;";
    } else if( *pch == ' ' ) {
        strHtmlBody += "&nbsp;";
    } else if( *pch == '&' ) {          //V5.50β2
        strHtmlBody += "&amp;";
    } else if( *pch == '\"' ) {         //V5.50β2
        strHtmlBody += "&quot;";
    } else {
        ....

 のような処理をしていました。

[ ]
RE:40575 【質問】秀丸メールマクロでXMLNo.40581
ダヴィンチ1958 さん 11/05/24 22:25
 

2011/05/24(火) 22:23:22

こんにちは、秀まるお2さん

ダヴィンチ@ユーザーです。

いろいろご教示いただき助かりました。
hmjre.dllのReplaceRegular関数か自前の関数で
行こうかと思います。

ありがとうございました。
また宜しくお願いします。

/*
** タイトル:『hidesoft.8:40575| RE 40573 【質問】秀丸メールマクロでXMLフ
ァイル出力』
** 発信日:2011年05月24日(火) 10:22:15
** 発信者:秀まるお2さん
*/
> XMLに変換する方だけであれば、"<"、">"、"&"の3つだけエンコードすればよ
>かったと思います。
>
> 逆の変換をするとなるともっと大量にあって大変ですけども。
>
>> 変換スピードの点も気になります。
>
> "<"等の文字は普通の文章にはそんなに大量に入ってくることは無いと思うの
>で、速度的にはマクロで処理してもそんなに遅くは無いと思います。むしろ、外
>部のDLL呼び出しとかで処理したとしても、最終的に秀丸マクロの文字列関係の
>処理を通るので、結局同じくらいの速度にしかならないと思います。
>
> しいて外部dllで処理させるとしたら、hmjre.dllのReplaceRegular関数でやる
>方法もあるかなぁと思います。
>
>> 他にWindows的な標準の対応があればどなたか紹介して
>> 頂けますか。
>
> 今ちょっとgoogleで"xml windows api"で検索したら、Msxml2.DOMDocumentっ
>ていうオブジェクトがあって、それを例えば秀丸マクロのcreateobject/
>callmethodで呼び出して使えばいいのかなぁと思いました。
>
> 具体的にどういうことが出来るのかまでは調べませんでしたけども。
>
> Msxml2.XMLHTTPってオブジェクトを使っていろいろやる例は、実はIKKIさんが
>作成されたマクロがありまして、それが一番参考になります。(という僕も、大
>変参考にさせていただいてます)

[ ]