Oto jak obecnie konwertuję XMLDocument na String
StringWriter stringWriter = new StringWriter();
XmlTextWriter xmlTextWriter = new XmlTextWriter(stringWriter);
xmlDoc.WriteTo(xmlTextWriter);
return stringWriter.ToString();
Problem z tą metodą polega na tym, że jeśli mam „ ((cytaty), które mam w atrybutach), to ucieka od nich.
Na przykład:
<Campaign name="ABC">
</Campaign>
Powyżej znajduje się oczekiwany XML. Ale powraca
<Campaign name=\"ABC\">
</Campaign>
Mogę wykonać String.Replace „\”, ale czy ta metoda jest w porządku? Czy są jakieś skutki uboczne? Czy będzie działać poprawnie, jeśli sam plik XML zawiera „\”
using
bloków, a nieXmlTextWriter
.Flush
, chociaż wywołanieClose
lub tylko zamknięciexmlTextWriter
using
bloku osiągnęłoby to samo.Zakładając, że xmlDoc jest obiektem XmlDocument, co jest nie tak z xmlDoc.OuterXml?
Właściwość OuterXml zwraca ciąg znaków w wersji xml.
źródło
Jeśli używasz
Windows.Data.Xml.Dom.XmlDocument
wersjiXmlDocument
(używanej na przykład w aplikacjach UWP), możesz użyć,yourXmlDocument.GetXml()
aby pobrać XML jako ciąg.źródło
Jako metoda rozszerzenia:
Teraz po prostu użyj:
źródło
"
jest pokazany jak\"
w debuggerze, ale dane są poprawne w ciągu i nie trzeba niczego zamieniać. Spróbuj zrzucić ciąg do pliku, a zauważysz, że ciąg jest poprawny.źródło