Wie cast von string zu SqlXml
Habe ich eine Methode, die zurückgibt, die ein wohlgeformtes Xml - string. Wie treibe ich diese Zeichenfolge SqlXml ?
Dieser link kann Ihr problem lösen. stackoverflow.com/questions/574928/...
InformationsquelleAutor TonyP | 2011-01-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
In SQL Server, eine einfache:
CAST(MyVarcharString AS xml)
Oder weisen Sie auf die SQLDbType.Xml.net wie, sagen wir, einen parameter
Aktualisiert mit SQLDbType.Xml info
Ich bin nicht wohl dabei, die folgenden , Ratschläge sxml = b ist.BaanSession(sxml); SqlParameter p = new SqlParameter("@x", SqlDbType.Xml); p.Wert = sxml; xmsg =(SqlXml) p.Wert;
Wir senden XML in ähnlicher Weise wie SQL-Server...
Das funktioniert Recht oft, aber die XML-wurden wir empfangen und versuchen zu analysieren, verwendet das Hochkomma statt Anführungszeichen zu Kapseln Knoten-Attribute und bei der Verwendung von CAST-und CONVERT-würde es Ausnahmen.
InformationsquelleAutor gbn
Einen anderen Weg, in reines C# - für die Nachwelt:
Ich hatte ein Problem mit diesem code, wenn die XML-Daten, die ich versuchte zu schreiben, verwendet ein einzelnes Zitat zu Kapseln Attribut-Werte anstelle von einem Angebot. Die xmlWriter.WriteString fehlgeschlagen und erzeugt eine Fehlermeldung über ungültiges XML. Ich hatte tatsächlich zu verwenden R. Schreurs code um das Problem zu lösen. Ganz ehrlich, der Grund hatte ich die zu konvertieren zu einem SqlXml-Typ anstatt ein string, der SQL Server war auch Würgen auf single-quote vs zitieren. Ich glaube nicht, falut den code überhaupt, nur eines dieser Dinge, wo diese nicht für mich arbeiten.
InformationsquelleAutor ReinhardtB
Dies ist meine version einer C# - conversion-Methode.
Bin ich nicht ganz bitte, weil ich hätte gerne den MemoryStream mit einem using-block, aber das gab mir:
Ich bin bereit, zu akzeptieren, dass Problem, denn dieser code ist nur in der unit-tests, wo ich will, um zu testen, ein SqlFunction mit einem SqlXml-parameter, die eingesetzt werden, um die SQL Server CLR.
Die Antwort von ReinhardtB funktionierte nicht für mich, aufgrund der folgenden Probleme:
Beim aufrufen dieser mit xmlData
"<?xml version=\"1.0\" encoding=\"utf-8\"?><test></test>"
(die Schrägstriche sind in der C# - string-literal), ich habe:Dies war leicht behoben, indem Sie die folgende änderung:
Jedoch führte dies zu der folgenden Ausnahme:
Diese konnte ich arbeiten-etwa durch weglassen der using-block der MemoryStream (das ist natürlich eine schlechte Idee), nur um zu schlagen das nächste Problem: beim prüfen der Wert von SqlXml SqlXml.Wert, fand ich, dass es enthält den Wert
<?xml version="1.0" encoding="utf-8"?><test></test>
,,, < und > gewesen zu entkommen! Das sieht aus wie ein ernstes Problem mit derSqlXml
geben.InformationsquelleAutor R. Schreurs
Ich weiß, das beantwortet wurde, aber keine der Antworten schien für mich arbeiten. Stattdessen nahm ich einen anderen Ansatz mit diesem oneliner
var sqlXml = new SqlXml(new XmlTextReader(new StringReader(stringToParseToSqlXml)));
Dies ist jedoch undicht, aber es zu verändern:
Ich habe diese verwendet, und es scheint für mich funktioniert.
InformationsquelleAutor Andersnk
SqlParameter funktioniert gut, wenn Sie die richtige Länge.
- Und -1, wenn Sie möchten, legen Sie DBNull.Wert in einigen Fällen :
InformationsquelleAutor Freewi