2017-05-17 5 views
1

Ich versuche, Dateien basierend auf den Daten in Excel mit VBScript/QTP erstellt erstellen. Das Problem, das ich habe, ist mit negativen Testfällen, die Sonderzeichen haben. Ich möchte Sonderzeichen als Knotentext schreiben, aber sie werden automatisch in Escape-Zeichen umgewandelt.Wie schreibe ich Sonderzeichen wie in XML-Datei

Text zu geschrieben werden: eine Adressleitung ist < > " ' & amp gleich 3 Actual Text nach dem Speichern der Datei: Adresszeile ist & lt; & gt; & quot; & apos; & Amp gleich 3

Gibt es eine Möglichkeit, vbscript/XMLDOM zu sagen, diese nicht zu konvertieren.

Code Ich benutze ist einfach.

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

** zu schreibendes Textfeld ** hat die Sonderzeichen bereits konvertiert. :) Sie können jedoch den eigentlichen Text im Code-Teil finden. –

+0

< and > definieren ein Attribut in XML, Sie können sie nicht als Wert verwenden, ohne es zu umgehen, daher wird es als Attribut betrachtet. Wenn Sie den XML-Code lesen, sollten Sie den Text in dem erwarteten Format erhalten. (Ohne Escape-Zeichen) .. Was ist das Problem, das Sie haben? –

+0

Ich versuche nur die Escape-Zeichen einzugeben. Bitte beziehen Sie sich auf meinen Code. Das Problem, mit dem ich konfrontiert bin, ist, dass jedes Und-Zeichen in '&' konvertiert wird und daher Zeichen wie '>' enthält und nicht wie erwartet in meiner resultierenden MQ-Nachricht, die dieses XML liest. –

Antwort

2

Verwenden Sie die folgende Zeile in dem 'If' Zustand:

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

Hier

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

Hier ist das Ergebnis: enter image description here

+0

Nicht genau das Problem, das ich habe. Das Problem, das ich habe, ist .... selbst wenn ich versuche, ein (<) Escape-Zeichen (vesselcript ist es in (& lt) oder (& GT) (>) Escapezeichen, daher meine xml bekommt falsche Zeichen. Wenn nicht (NodeList ist nichts) Dann NodeList.childNodes (0).nodeValue = "Adreßleitung ist < > " ' & amp gleich 3" End If Resultierende xml Adreßleitung ist & lt; & gt; & quot; & Apos; & amp; gleich 3

0

Mit dem Einsatz von @ Kiras Lösung und Lösungen, die unter dem folgenden Link veröffentlicht wurden, konnte ich meine Lösung erstellen. Das Problem besteht darin, dass XML linear vom Anfang bis zum Ende ersetzt wird.

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

Sie müssen die Zeichen proaktiv ersetzen, bevor XML sie ersetzt.

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

Für weitere Informationen, besuchen Sie diesen Thread. vbscript create-convert xml with special characters