Kode pembersihan nama node XML

Saya mencoba membuat file XML berdasarkan bidang data dari tabel, dan saya ingin nama node didasarkan pada nilai dalam bidang dari tabel. Masalahnya adalah terkadang nilai yang dimasukkan dalam kolom tersebut mengandung spasi dan karakter lain yang tidak diperbolehkan dalam nama Node.

Adakah yang punya kode yang akan membersihkan string yang diteruskan dan mengganti karakter yang tidak valid dengan teks pengganti sehingga dapat dibalik di ujung yang lain dan mendapatkan kembali nilai aslinya?

Saya menggunakan .net (vb.net tetapi saya dapat membaca/mengonversi c#)


person MikeScott8    schedule 17.09.2008    source sumber


Jawaban (3)


Mungkin lebih mudah jika Anda menyimpan nilai asli jika nilai tersebut ilegal sebagai nama simpul dalam suatu atribut. Maka Anda tidak perlu khawatir tentang terjemahan ke/dari yang rumit.

person Eric Schoonover    schedule 17.09.2008

Faktanya saya akan mengatakan lebih jauh bahwa kecuali Anda memiliki kendali penuh atas data, maka tidak ada proses penerjemahan yang akan berhasil. Jadi saya menyimpan data asli kedua sebagai atribut atau node anak.

person EBGreen    schedule 17.09.2008

Anda tidak menyebutkan bahasa apa di postingan asli Anda, jadi inilah pola regex yang dapat membantu Anda memulai. Ini CEPAT jadi Anda harus mengujinya.

([^A-Za-z0-9])|(\s)|(\t+)|(\c+)
person Community    schedule 17.09.2008
comment
terima kasih untuk regex itu dan saya akan memainkannya dan melihat apa yang bisa saya lakukan. - person MikeScott8; 17.09.2008
comment
YW. Saya membuat sedikit perubahan padanya. Sekali lagi, ini cepat dan saya pasti tidak mengujinya. semoga bisa membantu. - person ; 17.09.2008
comment
Saya pikir regex mungkin akan berfungsi, tetapi bagaimana Anda berencana melakukan terjemahan kembali? - person EBGreen; 17.09.2008
comment
Itulah masalahnya. Penerjemahan kembali sulit dan menurut saya rawan kesalahan. Itu sebabnya saya merekomendasikan untuk menyimpan nilai asli dalam beberapa cara (sebagai nilai atribut). - person Eric Schoonover; 18.09.2008