プロが教える店舗&オフィスのセキュリティ対策術

宜しくお願いいたします。
下記のプログラムで、
set Session("ServiceInfo") = CreateObject("MSXML2.DOMDocument.3.0")
Session("ServiceInfo").Async = False
Session("ServiceInfo").LoadXML "<?xml version=""1.0"" encoding=""Shift_JIS"" ?>" & Session("RoeApi").ReturnXml.xml
とやると、encoding属性が削除されてしまいます。
どうにかencoding属性までロードしたいのですが
どなたかご教授頂けないでしょうか。

A 回答 (4件)

transformNodeToObjectの解説には以下のようにあります。

該当しませんか?

The transformNodeToObject method always generates a Unicode byte-order mark, which means it cannot be used in conjunction with other Active Server Pages (ASP) Response.Write or Response.BinaryWrite calls.

この回答への補足

ご回答ありがとうございます。
Session("ServiceInfo")に日本語が混在している為、パースエラーが発生したと考え、encoding属性を付加しようと考えました。他の理由で、"テキストの内容に無効な文字が見つかりました"ということになるのでしょうか。
何か良い方法はございますでしょうか。
BinaryWrite を使用するということでしょうか。

補足日時:2005/02/13 08:19
    • good
    • 0

"テキストの内容に無効な文字が見つかりました"


文字列のエンコーディングとencodingの属性が一致していないのではないですか?

encoding属性を付加しても変換を行ってくれるわけではないので、正しく指定する必要があります

この回答への補足

ご回答ありがとうございます。
正しくしてする必要があるとのことですが、
Session("ServiceInfo")、AddElDoc
DomDomでしょうか。
また、指定の方法をご教授頂けますでしょうか。


Session("ServiceInfo"):変換元XML
AddElDoc:変換用XSLT
DomDom:変換先オブジェクト

補足日時:2005/02/13 22:07
    • good
    • 0

ちょっと気になったことが...外してそうな気もしますが



> 、<?xml version="1.0?>しか付加できませんでした。
は、DomDomを何らかの形で出力して確認したってことですよね?どんな方法で出力したんでしょう?

 xmlプロパティを使用してDOMの内容を覗くと、encoding属性が見えません。これを回避するにはsaveメソッドを使用する必要があります。

参考URL:http://msdn.microsoft.com/library/en-us/xmlsdk/h …

この回答への補足

ご回答ありがとうございます。
xmlプロパティを使用して出力しましたのでご回答どおりです。

ということは、以下の処理でパースエラーがでたのは、なぜなのでしょうか?
Session("ServiceInfo")をxmlプロパティで出力したものをAddElDoc(変換用XSL)で変換するとパースエラーは出ないのですが、TransformNodeToObjectを使用するとパースエラーが出てしまいます。
<<パースエラーが発生した処理>>
Session("ServiceInfo").TransformNodeToObject AddElDoc,DomDom

補足日時:2005/02/12 15:47
    • good
    • 0

MSXMLではencodingを保持しているように見えるのですが、なにをもってして


> encoding属性が削除されてしまいます。
という結論を出されたのでしょうか?

なぜ自分で指定した属性をDOMを通して取得したいのでしょう?

この回答への補足

すみません説明がたりませんで。
LoadXMLでロードしたDOM(Session("ServiceInfo"))を、AddElDocというXSLで加工して、DomDomというDOMへ格納しようとしたところ、"テキストの内容に無効な文字が見つかりました"というパースエラーが発生しました。
Session("ServiceInfo")の中を確認しますと、XML宣言がなくそれをLoadXMLで付加しようとしたところ、<?xml version="1.0?>しか付加できませんでした。

<<パースエラーが発生した処理>>
Session("ServiceInfo").TransformNodeToObject AddElDoc,DomDom

以上、宜しくお願いいたします。

補足日時:2005/02/11 23:46
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!