2014-07-22 10 views
5

Próbuję analizować ciąg xml i otrzymuję błądNieprawidłowa jednostka charakter parsowania xml

[Error: Invalid character entity 
Line: 0 
Column: 837 
Char: ] 

Czy xml nie podoba nawiasy? Czy muszę zamienić wszystkie nawiasy na "\\". Dzięki

+0

raport rozpoczyna się od [i kończy się], zły znak jest przed nawias zamykający. Zredukuj swój plik XML, dopóki nie pojawi się kilka linii, które nadal mają ten problem, i dodaj to do swojego pytania. Nie mamy pojęcia, z czym teraz pracujesz. –

+0

Zasadniczo jest to część os obiektu json. Wiem, że to musi być jakaś postać, ponieważ jeśli przejdę do innego xml, to działa. Tak więc jest to coś w xml. Chciałbym móc opublikować xml, ale jego wrażliwe dane. – jrock2004

+0

Większość xml, który ma nawiasy, wygląda mniej więcej "ograniczenie zestawu zamówień -Przejdź do dowolnego produktu A [TBD]" bez cudzysłowów – jrock2004

Odpowiedz

6

OK, nieprawidłową postacią była kreska i &. Naprawiłem go w następujący sposób:

xml = data.testSteps.replace(/[\n\r]/g, '\\n') 
        .replace(/&/g,"&") 
        .replace(/-/g,"-"); 

Dzięki

+0

Zostawiłem zamień (/ [\ n \ r]/g, '\\ n') z powodów związanych z wydajnością. – Smile4ever

1

Korzystanie węzeł DOMParser dostanie około konieczności wykonywania ciąg wymienić na każdy znak, który nie jest łatwo analizowany jako łańcuch. Jest to szczególnie przydatne, jeśli masz spore ilości XML do przeanalizowania, które mogą mieć różne znaki.

Polecam xmldom jak użyłem go z powodzeniem xml2js

Połączone użycie wygląda następująco:

var parseString = require('xml2js').parseString; 
var DOMParser = require('xmldom').DOMParser; 

var xmlString = "<test>some stuff </test>"; 
var xmlStringSerialized = new DOMParser().parseFromString(xmlString, "text/xml"); 
    parseString(context.xmlString, function (err, result) { 
     if (err) { 
      //did not work 
     } else { 
      //worked! use JSON.stringify() 
      var allDone = JSON.stringify(result); 
     } 
    }); 
Powiązane problemy