ruby - How do i remove   — – special characters from my XML files -


यह xml फ़ाइल का नमूना है

  & lt; row tnote = "0" & gt; & Lt; प्रविष्टि नामित = "कॉल 2" नामांकित = "कॉल 4" हमें = "कोई नहीं" एफ़एमपी = "बीएलडी" & gt; & lt; blst & gt; & Lt; li & gt; & lt; text & gt; सिंगल, घर के प्रमुख, या योग्यता विधवा (एर) & amp; # x2014; $ 55,000 & lt; / text & gt; & lt; / li & gt; & Lt; li & gt; & lt; text & gt; विवाहित फाइलिंग को संयुक्त रूप से & amp; # x2014; $ 115,000 & lt; / text & gt; & lt; / li & gt; & Lt; / BLST & gt; & lt; / प्रविष्टि & gt; & Lt; प्रविष्टि colname = "col6" ldr = "1" valign = "middle" & gt; & amp; # x2002; & lt; / एंट्री & gt; & Lt; प्रविष्टि colname = "col7" valign = "middle" & gt; 5. & lt; / प्रविष्टि & gt; & Lt; / पंक्ति & gt;  

आदि & amp; # x2014; आदि HTML 4.0 संस्थाओं का प्रतिनिधित्व करते हैं मैं प्रत्येक पंक्ति के टेक्स्ट को किसी सरणी के एक तत्व के रूप में संग्रहित करना चाहता हूं, लेकिन यदि वह रेखा सिर्फ और # x2002;

  यदि ई। Text.strip = ~ / ^ & Amp; # x20 [0-9] [0-9]; $ / फिर अगला उप-पंक्तियां & lt; & lt; E.text end  

लेकिन यह काम नहीं कर रहा है ... क्या मेरा regEx गलत है?

और & amp; #x ...; एक इकाई संदर्भ नहीं है, यह एक चरित्र का संदर्भ है एक्सएमएल पार्सर के लिए, और ... कच्चा अक्षर - के समान बिल्कुल समान है, इसलिए जब आप एक XML पार्सर द्वारा प्रॉपर्टी के माध्यम से उत्पादित DOM को देखते हैं element.text आप इसमें एक एम्परसेंड के साथ कुछ भी नहीं देखेंगे, लेकिन एक सरल - चरित्र।

इसलिए सिद्धांत रूप में, आप मैच करेंगे यह एक regex जैसे / [-] / जैसा कुछ है हालांकि, अगर आप रूबी 1.8 का उपयोग कर रहे हैं, तो आपको समस्या है कि भाषा में यूनिकोड के लिए समर्थन नहीं है, इसलिए / [-] / में वर्ण समूह काफी काम नहीं करेगा ठीक है: यह यूटीएफ -8 में - , - और के प्रतिनिधित्व में हर बाइट को निकालने का प्रयास करेगा, जो कि किसी भी अन्य वर्णों को उलझा देगा ।

प्रत्येक लक्ष्य चरित्र के लिए एक सरल स्ट्रिंग की जगह ठीक से काम करेगी, क्योंकि इसमें विशेष वर्ण हैंडलिंग की आवश्यकता नहीं होती है। (स्वाभाविक तौर पर यदि आप सीधे स्रोत कोड में जैसे - वर्णों को शामिल करते हैं, तो आपको उस स्क्रिप्ट के फ़ाइल एन्कोडिंग को भी सही करना पड़ता है, इसलिए संभवतः स्ट्रिंग शब्दशः पलायन का उपयोग करना आसान है जैसे कि "\ Xe2 \ x80 \ x94 "।)


Comments

Popular posts from this blog

c# - sqlDecimal to decimal clr stored procedure Unable to cast object of type 'System.Data.SqlTypes.SqlDecimal' to type 'System.IConvertible' -

Calling GetGUIThreadInfo from Outlook VBA -

Obfuscating Python code? -