View Full Version : سوال: عدم كاركرد CDATA در XML
A.Nemati
چهارشنبه 22 تیر 1390, 08:48 صبح
سلام
من يك xml به اين صورت دارم:
<?xml version="1.0" encoding="utf-8" ?> <fax><recipients><recipient><department-name><![CDATA[شرکت سايرين]]></department-name></recipient></recipients></fax>
طبق تعريف، پارسر نبايد محتواي CDATA را پارس كند اما من خطاي An invalid character was found in text content را دريافت ميكنم.
اگر به جاي عبارت فارسي در CDATA (شركت سايرين) مثلا بنويسم ali مشكل حل ميشود.
دوستاني كه در اين زمينه تجربه دارند لطف كنند و مرا راهنمايي كنند.
Arman_1367
چهارشنبه 22 تیر 1390, 10:19 صبح
شما همین فایل را با notepad++ باز کنید و به صورت utf8 ذخیره کنید مشکلی وجود نخواهد داشت
A.Nemati
دوشنبه 27 تیر 1390, 02:12 صبح
شما همین فایل را با notepad++ باز کنید و به صورت utf8 ذخیره کنید ...
ممنون از پاسخ شما ولي من نياز به روشي دارم كه در حين اجراي برنامه به درستي كار كند. اين xml توسط برنامه ديگري توليد ميشود و در برنامه من دريافت ميشود و برنامه دريافت كننده بايد اطلاعات آن را در يك ليست به كاربر نمايش دهد.
Arman_1367
دوشنبه 27 تیر 1390, 19:46 عصر
خوب می توانید فایل تولید شده رو خودتون با استفاده از توابع استاندارد خط به خط به یک فایل یونیکد تبدیل کنید و بعد با استفاده از TXMLDocument آن را مورد استفاده قرار دهید.
دلیلی نمی بینم توضیح اضافه تری بدهم در پست اول جواب شما داده شد.اگر می دانید که مشکل از این قسمت نیست یا از ضعف TXMLDocument می باشد می توانید دنبال کمپاننت قویتر یا جایگزین باشید در ضمن به این علت که نمی خواستم پست را شلوغ کنم جواب شما را در این پست دادم.
A.Nemati
سه شنبه 28 تیر 1390, 20:43 عصر
خوب می توانید فایل تولید شده رو خودتون با استفاده از توابع استاندارد خط به خط به یک فایل یونیکد تبدیل کنید و بعد با استفاده از TXMLDocument آن را مورد استفاده قرار دهید.
اين روش خوبي نيست. يادم نيست كه در سوالم از اينكه xml من يونيكد است يا خير يا چه كدپيجي دارد صحبت كرده باشم. من يك xml دارم كه نميدانم چه كدپيچي دارد. توسط برنامه ديگري توليد شده و من در حين اجراي برنامه آن را ميخوانم.
من ميخواهم علت و روش اصلاح را بدانم. يكي از دوستان ميگفت كه TXMLDocument به اندازه كافي قوي نيست و استدلالش همين مشكل من بود چون پارسر xml عملا نبايد به محتواي CDATA كاري داشته باشد. آيا درست است؟ آيا تعويض كامپوننت ميتواند مشكل را حل كند باشد يا مشكل از جاي ديگري است و زمان گذاشتن براي تعويض كامپوننت بيهوده است؟
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.