मैं एक पूर्ण पर्ल न्यूबी हूं, लेकिन मुझे यकीन है कि सीखना पर्ल एक्सएमएल को अजीब में कैसे पार्स करना है, यह समझने से आसान होगा। मैं इस डेटासेट से .sgm फ़ाइलें पार्स करने के लिए करना चाहते हैं:पर्ल एक्सएमएल :: डीओएम मॉड्यूल का उपयोग करते हुए पार्सर त्रुटि, "अमान्य वर्ण संख्या का संदर्भ"
http://kdd.ics.uci.edu/databases/reuters21578/reuters21578.html
यह एक दशक पहले से न्यूज़वायर से 20,000 रायटर लेखों का संग्रह है, और पाठ प्रसंस्करण के कुछ प्रकार के लिए एक मानक परीक्षण सेट है। मेरे पर्ल परीक्षण को सरल बनाने के लिए, मैंने पहली फ़ाइल से पहली कुछ सौ लाइनों को पकड़ लिया और test.sgm बनाया जब तक मेरी स्क्रिप्ट उस पर सही तरीके से काम नहीं करती। यह इस तरह से शुरू होती है:
<!DOCTYPE lewis SYSTEM "lewis.dtd">
<REUTERS TOPICS="YES" LEWISSPLIT="TRAIN" CGISPLIT="TRAINING-SET" OLDID="5544" NEWID="1">
<DATE>26-FEB-1987 15:01:01.79</DATE>
<TOPICS><D>cocoa</D></TOPICS>
<PLACES><D>el-salvador</D><D>usa</D><D>uruguay</D></PLACES>
<PEOPLE></PEOPLE>
<ORGS></ORGS>
<EXCHANGES></EXCHANGES>
<COMPANIES></COMPANIES>
<UNKNOWN>
C T
f0704reute
u f BC-BAHIA-COCOA-REVIEW 02-26 0105</UNKNOWN>
<TEXT>
<TITLE>BAHIA COCOA REVIEW</TITLE>
<DATELINE> SALVADOR, Feb 26 - </DATELINE><BODY>Showers continued throughout the week in
the Bahia cocoa zone, alleviating the drought since early
January and improving prospects for the coming temporao,...
मैं एक उदाहरण के रूप http://www.xml.com/pub/a/2001/05/16/perlxml.html से एक पर्ल स्क्रिप्ट का इस्तेमाल किया है, और यह, extract.pl साथ समाप्त हो गया:
use XML::DOM;
my $file = $ARGV[0];
my $parser = XML::DOM::Parser->new();
my $doc = $parser->parsefile($file);
#print $doc->getElementsByTagName('DATE');
print "\n";
और मैं इस उत्पादन प्राप्त करें:
> perl extract.pl test.sgm
reference to invalid character number at line 11, column 0, byte 343 at /usr/lib64/perl5/vendor_perl/5.8.5/x86_64-linux-thread-multi/XML/Parser.pm line 187
>
Google मदद नहीं करता है (शीर्ष हिट एक ऐसा पृष्ठ प्रतीत होता है जो एक ही त्रुटि का सामना कर रहा है) और मेरा पर्ल हैकर मित्र अभी भी वेगास में ब्लैकहाट से लटका हुआ है। कोई विचार जो मैं गलत कर रहा हूं, या मैं फ़ाइल को कैसे साफ कर सकता हूं? मुझे लगता है कि उस "अज्ञात" टैग के अंदर बुराई हो रही है, जिसकी मुझे आवश्यकता भी नहीं है। मैं वास्तव में सिर्फ हर लेख से पाठ निकालना चाहता हूं। अगर आपको अधिक जानकारी चाहिए तो कृपया मुझे बताएं।
ठीक है तो। ऐसा प्रतीत होता है कि मैं कुछ भी गलत नहीं कर रहा हूं। चूंकि मैं न तो एक्सएमएल बना रहा हूं और न ही किसी भी उपयोगी के लिए अमान्य वर्णों का उपयोग कर रहा हूं, एक साधारण sed "s/& #/bad/g" cleantest.sgm चाल करने के लिए लगता है। खैर, यह अभी भी "लाइन 72 पर दस्तावेज़ तत्व के बाद जंक" के बारे में शिकायत कर रहा है लेकिन यह असंबंधित है। मेरे लिए उस XML संग्रह को ट्रैक करने के लिए धन्यवाद। –
PlexLuthor