2017-05-17 27 views
1

vbscript/QTPを使用してExcelで提供されているデータに基づいてファイルを作成しようとしています。私が持っている問題は、特殊文字を持つ否定的なテストケースです。私はノードテキストとして特殊文字を書いていますが、エスケープ文字に自動的に変換されています。特殊文字をそのままXMLファイルに書き込む方法

テキストを書き込まれる:アドレスライン一つがファイル保存後3 実際のテキストに等しい< > " ' &アンプである:アドレスラインを1 & LTです。 & gt; & quot; & apos; & amp 3に等しい

これらを変換しないようにvbscript/XMLDOMに指示する方法はありますか。

コード私は単純なものを使用しています。

Set NodeList = uxtXMLDoc.documentElement.selectSingleNode(strNodePath) 

If Not(NodeList is Nothing) Then          
    NodeList.childNodes(0).nodeValue = "address line one is&lt;&gt;&quot;&apos;&amp equal to 3" 
End If 
+0

**書き込まれるテキストフィールド**は既に特殊文字を変換しています。 :)ただし、実際のテキストはコード部分に記述することができます。 –

+0

< and >はxmlの属性を定義するもので、エスケープしないと値として使用できないため、属性と見なされます。 XMLを読むときは、期待どおりの形式でテキストを取得する必要があります。 (エスケープ文字なし)..あなたは何を持っているのですか? –

+0

エスケープ文字のみを入力しようとしています。私のコードを参照してください。 私が直面している問題は、すべてのアンパサンドが '&'に変換されているため、このXMLを読んでいる結果のMQメッセージに '>' –

答えて

2

'の場合' 条件内で次の行を使用します。

ここ
NodeList.childNodes(0).nodeValue = "address line one is"&Chr(60)&Chr(62)&Chr(34)&chr(39)&"&amp equal to 3" 

、ここで

chr(60) means < 
    chr(62) means > 
    chr(34) means " 
    chr(39) means ' 

は結果である: enter image description here

+0

私にはまったく問題はありません。 問題は...(<)または(>)エスケープ文字を追加しようとしても、vbscriptが(& lt)または(& gt)に変更されているため、xmlが正しくない文字を取得しています。 (NodeListがNothing)の場合 NodeList.childNodes 結果として得られるXML アドレスライン一つが& LTの場合のnodeValue = 終了 "アドレスライン一つ< > " '&3に等しいアンプです"。 & gt; & quot; &および3に等しい。

0

を使用すると@以下のリンクに掲載されているKiraのソリューションとソリューション私は自分のソリューションを作成することができました。問題は、XMLが最初から最後まで直線的に置き換えられることです。

Hence first ampersand in ("&lt;") will be replaced as ("&amp;lt") instead of (<). 

XMLを置換する前に、事前に文字を置換する必要があります。

strReplaceText = Replace(strtext, "&lt;", chr(60)) //Sample... Repeat for all the chars 
NodeList.childNodes(0).nodeValue = strReplaceText 
objXML.Save(destination) 

詳細については、このスレッドをご覧ください。 vbscript create-convert xml with special characters

関連する問題