XML als String-Variable
Hi Community,
Ich stehe total am Schlauch bei einem Thema das eigentlich ganz einfach sein sollte. INet liefert nicht das gewüschte Ergebnis auf meine Fragen (ich stelle die Frage wohl nicht richtig 🤷♂️) und bitte deshalb um eure Hilfe.
Das Problem:
Ich habe eine sehr große XML erhalten die ich als String-Variable direkt im Code speichern will/muss und nicht als z.B. Embeded Ressource oder so. Die xml enthält einige Sonderzeichen ( ";{}[]><| ) dort wo sie innerhalb des String für C# ein Problem darstellen. Ich will aber nicht jede Zeile (1000e...) durchgehen und das korrigieren sondern C# verklickern, dass es gefälligst den String als String akzeptieren und nicht als XML oder XAML interpretieren soll, so wie es z.B Powershell macht/kann.
siehe in Powershell:
Komme aber irgendwie nicht dahinter wie das in C# sauber funktioniert (bsp):
Kann mir jemand sagen wie ich das bewerkstellige?
Danke und beste Grüße!
Mayho
Ich stehe total am Schlauch bei einem Thema das eigentlich ganz einfach sein sollte. INet liefert nicht das gewüschte Ergebnis auf meine Fragen (ich stelle die Frage wohl nicht richtig 🤷♂️) und bitte deshalb um eure Hilfe.
Das Problem:
Ich habe eine sehr große XML erhalten die ich als String-Variable direkt im Code speichern will/muss und nicht als z.B. Embeded Ressource oder so. Die xml enthält einige Sonderzeichen ( ";{}[]><| ) dort wo sie innerhalb des String für C# ein Problem darstellen. Ich will aber nicht jede Zeile (1000e...) durchgehen und das korrigieren sondern C# verklickern, dass es gefälligst den String als String akzeptieren und nicht als XML oder XAML interpretieren soll, so wie es z.B Powershell macht/kann.
siehe in Powershell:
$myXMLasVariable = @"
<?xml version="1.0" encoding="utf-8"?>
<Configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<ErrorItem>
<Id>12005</Id>
<IdType>AGENT</IdType>
<Message> The "<%hs>" is not valid.</Message>
<Messager>WINHTTP</Messager>
<EvaluateAsError>true</EvaluateAsError>
</ErrorItem>
...
...
...
...
</Configuration>
"@
Komme aber irgendwie nicht dahinter wie das in C# sauber funktioniert (bsp):
string myXMLasVariable = @"";
#oder
string myXMLasVariable = $@"";
Kann mir jemand sagen wie ich das bewerkstellige?
Danke und beste Grüße!
Mayho
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 71563807386
Url: https://administrator.de/contentid/71563807386
Ausgedruckt am: 22.11.2024 um 03:11 Uhr
11 Kommentare
Neuester Kommentar
Raw String Literals (C#11) are your friend ...
Built-in reference types (C# reference)
Ob man jetzt 2,3 oder mehr Quotes setzt kommt darauf an ob im String in einer Zeile diese Sequenenz alleine vorkommt.
Wichtig ist das die Anzahl der am Anfang gesetzten Quotes gleich der in der letzten Zeile ist.
Das hier geht also genauso
Gruß Katrin
var message = """
"This is a very important message."
""";
Ob man jetzt 2,3 oder mehr Quotes setzt kommt darauf an ob im String in einer Zeile diese Sequenenz alleine vorkommt.
Wichtig ist das die Anzahl der am Anfang gesetzten Quotes gleich der in der letzten Zeile ist.
Das hier geht also genauso
var message = """""
"This is a very important message."
""""";
Gruß Katrin
Zitat von @mayho33:
Zitat von @8030021182:
Raw String Literals (C#11) are your friend ...
Ja genau das will ich vermeiden. bei einer XML mit 10.000 Zeilen und mehr ist das eine Wochenaufgabe... Siehe auch das Beispiel wie es in PS aussieht.Raw String Literals (C#11) are your friend ...
? Genau das macht das doch, da musst du gar nichts bearbeiten, einfach nur dazwischen einfügen und fertig!
Das in einem XML """ oder """"" oder wenn du sicher gehen willst noch länger, alleine auf einer Zeile steht ist unwahrscheinlich zumal das ja schon gegen die XML-Rules verstößt.
Just read the manual above !
Dann hast du kein C#11.0, das funktioniert erst ab dieser Version , klappt hier nämlich einwandfrei damit, RTFM, da steht es doch klar und deutlich. 🤔
p.s. was ist der Grund warum du keine embedded resource nehmen willst/kannst??
Ich will aber nicht jede Zeile (1000e...) durchgehen
Lässt du halt einmal nen String.Replace() drüber laufen der die enthaltenen Anführungszeichen escaped, und packst das Ergebnis in ein @"" fertig, die anderen Sonderzeichen müssen darin ja nicht escaped werden nur die Anführungszeichen.Das ist in wenigen Sekunden erledigt.
Krampf bleibt halt Krampf 🤪
Wieso sollte sich das Format ändern wenn ich nur die Anführungszeichen per replace verdoppele??? Da ändert sich rein gar nichts am Format noch am Inhalt im Ergebnis der Variablen!
Solche Kunden machen später dann meist eh nur Ärger, IMHO Finger weg, lohnt nich, lass sie ihren Code mit ChatGPT schreiben das wird denen wohl genügen 🤣.
Sonst versteht die andere Seite das nucht mehr...
Die futeln dann im Code rum wenn sie keine Ahnung haben oder wie? 🙃Ich werde wohl auf C#11 updaten müssen...
Dein Kunde dann aber auch 🤪Solche Kunden machen später dann meist eh nur Ärger, IMHO Finger weg, lohnt nich, lass sie ihren Code mit ChatGPT schreiben das wird denen wohl genügen 🤣.