how to parse xml with special character? specifically for ampersand

javascript, special-characters, xml

Solution

Start with replacing the `&` character, then replace the other characters. Otherwise you will replace `&` from the previous entities (`<` etc.) by `&`

string.replace(/&/g, '&amp;amp;') //<= start with
      .replace(/</g, '&lt;')
      .replace(/>/g, '&gt;')
      .replace(/"/g, '&quot;')
      .replace(/'/g, '&apos');
// &apos; may be "\\'",  depends on how te OP wants to use it

[edit based on comments] use `&amp;amp;` to replace the ampersand character

Problem

I am getting data from text box and change it into xml format and store it in data base. For allowing special characters i wrote javascript function to replace special character with its html entities. ``` " &quot; & &amp; < &lt; > &gt; ``` for "quotes , less than , greater than" its working fine. for "&" it is showing xml parser error i used javascript to replace special character with its entity ``` string.replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/&/g, '&amp;').replace(/"/g, '&quot;').replace(/'/g, "\\'"); for "&" allow showing warning but it get stored in data base. please help me to sort out this problem . i begin with string.replace(/&/g, '&amp;') even though i am getting ``` Warning: SimpleXMLElement::__construct(): Entity: line 9: parser error : EntityRef: expecting ';' in /var/www/ i tried this also &amp;amp; as mentioned in this link stackoverflow.com/questions/1328538/… After that there is no warning but while saving in db it saved as "ab &amp cd"

Original source

Related problems