Ersetzen Sie zuerst alle "@" in Ihrem XML-Inhalt durch einen Platzhalter (als Beispiel {{at_the_rate}}). Dann benutze den untenstehenden Code
%Vor%Das JSON.NET-Framework kann XML in JSON konvertieren, verwendet jedoch das @ -Zeichen in JSON als Attribut. Ich würde das lieber entfernen, bevor ich es zur Ansicht sende. Was wäre der beste Ansatz dafür?
Ich weiß, dass ich einen direkten Ersatz machen kann, aber ein @ -Zeichen kann irgendwo relevant sein und sollte nicht ersetzt werden. Gibt es dafür einen Regex?
%Vor% %Vor%Ich ging voran und benutzte das. Lassen Sie mich wissen, ob es einen besseren Weg gibt.
%Vor% Eine andere Möglichkeit ist, Ihre eigene OneWayXmlNodeConverter
von JsonConverter
zu erben und SerializeObject
anstelle von SerializeXmlNode
wie folgt aufzurufen:
Ich nenne es "One Way", weil ich annahm, dass der Standardwert XmlNodeConverter
das Zeichen "@" hinzufügt, damit es vom resultierenden JSON zurück in XML konvertiert werden kann.
Wenn Sie die Quelle JSON.NET
in Ihr Projekt einbinden (im Gegensatz zu nur der kompilierten Bibliothek), können Sie OneWayXmlNodeConverter
einfach erstellen, indem Sie den XmlNodeConverter
-Code kopieren und das fest codierte "@" entfernen. Melden Sie die private Methode GetPropertyName
an und speichern Sie sie als OneWayXmlNodeConverter
.
Hinweis: Ich weiß, dass Ihre Frage spezifisch für das "Ersetzen" des "@" - Zeichens ist, aber das verknüpfte Verhindern Variation dieser Frage wird als doppelt markiert.
Es ist eine Weile her seit dieser Antwort, aber das kann noch jemandem helfen. Da Sie das XMLDocument bereits besitzen, können Sie die Attribute entfernen und konvertieren, bevor Sie sie serialisieren. Ich habe versucht, entweder die Attribute zu entfernen oder sie in Elemente umzuwandeln.
%Vor%Und dann;
%Vor%Ich schlage vor, die folgende Regex zu verwenden, die gleiche wie @yieio, aber zu verbessern, um den Inhalt unverändert zu lassen und nur die Eigenschaftsnamen zu beeinflussen
%Vor%Ich ging voran und benutzte das. Lassen Sie mich wissen, ob es einen besseren Weg gibt.
%Vor%Der Regex funktioniert nicht immer gut, wenn Inhalt den @ -Zeichen hat und an erster Stelle ersetzt wird. also denke ich %code% könnte besser sein.
Das JSON.NET-Framework kann XML in JSON konvertieren, verwendet jedoch das @ -Zeichen in JSON als Attribut. Ich würde das lieber entfernen, bevor ich es zur Ansicht sende. Was wäre der beste Ansatz dafür?
Ich weiß, dass ich einen direkten Ersatz machen kann, aber ein @ -Zeichen kann irgendwo relevant sein und sollte nicht ersetzt werden. Gibt es dafür einen Regex?
%Vor% %Vor%Eine andere Möglichkeit ist, Ihre eigene %code% von %code% zu erben und %code% anstelle von %code% wie folgt aufzurufen:
%Vor%Ich nenne es "One Way", weil ich annahm, dass der Standardwert %code% das Zeichen "@" hinzufügt, damit es vom resultierenden JSON zurück in XML konvertiert werden kann.
Wenn Sie die Quelle %code% in Ihr Projekt einbinden (im Gegensatz zu nur der kompilierten Bibliothek), können Sie %code% einfach erstellen, indem Sie den %code% -Code kopieren und das fest codierte "@" entfernen. Melden Sie die private Methode %code% an und speichern Sie sie als %code% .
Hinweis: Ich weiß, dass Ihre Frage spezifisch für das "Ersetzen" des "@" - Zeichens ist, aber das verknüpfte Verhindern Variation dieser Frage wird als doppelt markiert.
Es ist eine Weile her seit dieser Antwort, aber das kann noch jemandem helfen. Da Sie das XMLDocument bereits besitzen, können Sie die Attribute entfernen und konvertieren, bevor Sie sie serialisieren. Ich habe versucht, entweder die Attribute zu entfernen oder sie in Elemente umzuwandeln.
%Vor%Und dann;
%Vor%Wenn der JSON eingerückt ist, könnte dies funktionieren:
%Vor%Ich schlage vor, die folgende Regex zu verwenden, die gleiche wie @yieio, aber zu verbessern, um den Inhalt unverändert zu lassen und nur die Eigenschaftsnamen zu beeinflussen
%Vor%Ich brauchte eine Weile, um die richtige Antwort zu finden, also dachte ich, ich würde teilen:
%Vor%Ausgabe:
%Vor%Wenn Sie auf den Wert eines Attributs aufgrund des '@' - Zeichens zugreifen möchten, gehen Sie folgendermaßen vor:
%Vor%Ersetzen Sie zuerst alle "@" in Ihrem XML-Inhalt durch einen Platzhalter (als Beispiel {{at_the_rate}}). Dann benutze den untenstehenden Code
%Vor%