Oracle XML parsing échoué , de caractère non valide a trouvé un Nom ou Nmtoken
Le code ci-dessous fonctionne bien pour les non-entiers bien .
J'ai plusieurs balises avec des entiers ( dire <1>
, <2>
etc),
SET serveroutput ON
alter session set cursor_sharing = exact;
with xmldata(d) as (select xmltype('<ROWSET><ROW><1>ABC</1></ROW></ROWSET>') from dual
)
select x.*
FROM xmldata,
xmltable('ROWSET/ROW' passing xmldata.d
columns
name varchar2(10) path '1'
) x
;
J'ai essayé d'utiliser cette aussi:
DECLARE
l_xml xmltype;
l_val VARCHAR2(1000) := '<ROWSET><ROW><1>ABC</1></ROW></ROWSET>';
BEGIN
l_xml := xmltype(l_val);
end;
Les deux conduit à une erreur ci-dessous:
Error report:
ORA-31011: XML parsing failed
ORA-19202: Error occurred in XML processing
LPX-00231: invalid character 49 ('1') found in a Name or Nmtoken
Error at line 1
ORA-06512: at "SYS.XMLTYPE", line 310
ORA-06512: at line 5
31011. 00000 - "XML parsing failed"
*Cause: XML parser returned an error while trying to parse the document.
*Action: Check if the document to be parsed is valid.
Merci d'avance et appréciations:)
- Oracle version utilisez-vous?
11.2.0.1.0
...- Eeek....c'est la version de base pour 11gR2. Je recommande fortement la mise à niveau vers 11.2.0.4.0 ASAP.
Vous devez vous connecter pour publier un commentaire.
En fait, je n'ai pas besoin de connaître la version Oracle (mais en général, c'est une bonne pratique de toujours fournir lorsque vous posez une question).
L'erreur, LPX-00231, semble être auto-explicatif. Vous ne pouvez pas démarrer le nom avec un numéro. Si vous modifiez le code pour lire:
Puis il fonctionne très bien.
Espère que ça aide....
path
"A1" et je savais que cela fonctionne.. Donc, ma requête fonctionne bien (11.2.0.4.0
) et au-dessus de ma requête ? Était-ce seulement le problème avec ma version actuelle (11.2.0.1.0
) ?L'erreur:
est parce que dans votre XML que vous avez un élément
1
:où
<1>
est un balise de début de l' (et</1>
est un balise de fin). Dans les balises de1
est le nom de qui donne le type de l'élément. Les noms de certains les règles de nommage:et
Les définitions exactes des
Name
etNameStartChar
sont ici.Comme d'habitude un plus conviviale explication est fournie à partir de W3School:
Résumé:
Toujours commencer vos noms d'élément avec une lettre - utilisation
COL1
au lieu1COL
.