2008-09-17 26 views
1

Ich versuche, eine XML-Datei basierend auf Datenfeldern aus einer Tabelle zu erstellen, und ich möchte die Knoten basierend auf dem Wert in einem Feld aus der Tabelle benannt haben. Das Problem besteht darin, dass in dieser Spalte eingegebene Werte manchmal Leerzeichen und andere Zeichen enthalten, die in Knotennamen nicht zulässig sind.XML-Knotenname bereinigen Code

Hat jemand Code, der eine übergebene Zeichenfolge bereinigt und ungültige Zeichen mit Ersatztext repalce, so dass es am anderen Ende umgekehrt werden kann und den ursprünglichen Wert zurück erhalten kann?

Ich verwende .net (vb.net aber ich kann C# lesen/convert)

Antwort

1

Es könnte einfacher sein, wenn Sie den ursprünglichen Wert gespeichert, wenn sie als Knotennamen in einem Attribut illegal waren. Dann würden Sie sich keine Sorgen machen, eine Art von Komplex zu/von Übersetzung zu haben.

+0

sehr guter Tipp über den ursprünglichen Wert zu speichern – MikeScott8

1

In der Tat würde ich so weit gehen, zu sagen, dass, wenn Sie die vollständige Kontrolle über die Daten haben, dann würde kein Übersetzungsprozess jemals funktionieren. Also speichere ich die Originaldaten entweder als Attribut oder als Kindknoten.

+0

Sie sind rechts und am Ende haben wir die Übersetzung nicht tun – MikeScott8

1

Sie haben nicht in Ihrem ursprünglichen Beitrag gesagt, welche Sprache, also hier ist ein Regex-Muster, das Sie beginnen sollte. Dies ist QUICK, also müssen Sie es testen.

([^A-Za-z0-9])|(\s)|(\t+)|(\c+) 
+0

Dank für die regex und ich werde mit ihm spielen und sehen, was ich daraus machen. – MikeScott8

+0

YW. Ich habe eine kleine Änderung vorgenommen. Auch das ist schnell und ich habe es definitiv nicht getestet. Hoffentlich wird es helfen. – Chuck

+0

Ich denke, dass Regex wird wahrscheinlich funktionieren, aber wie planen Sie, die Übersetzung zurück zu tun? – EBGreen