התמודדות עם EntityRef: expecting ';' in Entity (מחרוזת XML שעוברת מ-MSXML אל PHP XML DOM )

יש לי מודול באחד התוכנות
שמשדר XML מתוך אקסל באמצעות MSXML גירסה 2 של MICROSOFT

אל Web Service ב-PHP

והשירות מחזיר XML בחזרה, כאשר ה-XML נשמר כרשומות בדאטאבייס.

עכשיו – מסתבר שלמרות שיש תקן מאוד ברור ל-XML

אז MSXML – לפעמים מתעלם ממנו.

היתה לי שורה שהכילה את מדד המניות האמריקאי – S&P

כמו שאתם רואים בין האותיות יש את סימן ה- &

אז ה-MSXML מכניס אותו למחרוזת בלי בעיה, למרות שזה לא תקין,

כי לפי ההגדרות – זהו סימן שמור שאמור להפוך לamp

זאת ההגדרה :

'&' (ampersand) becomes '&'

טוב… מה שקרה הוא כמובן תקלה, כי המרכיב ב-PHP שמקבל את זה , XML DOM (אוביקט DOMDocument )

לא ידע לאכול את זה….

הפתרון הוא ממש פשוט במקרה זה ,

רגע לפני שטוענים את ה-מחרוזת XML אל תוך האוביקט

צריך להפוך את הסימני & למשהו אחר.

ככה זה ב-php :

$tmp = str_replace('&','-',$tmp);

בהצלחה!

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *