Carriage Return characters (\r) are incorrectly replaced with Newline characters (\n)
Los mantenedores suelen responder en 4 días
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 42/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Estancado
- Stack tecnológico
- javascript
- Área
- backend
Línea de trabajo
Comienza en src/xmlparser/OrderedObjParser.js, en la función parseXml, e inspecciona la normalización de los retornos de carro. Reproduce el problema con el XML CDATA mostrado en el informe y, después, verifica que el texto analizado conserve los caracteres \r como se espera, sin cambiar el resto del comportamiento de entrada documentado.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
- Are you running the latest version?
- Have you included sample input, output, error, and expected output?
- Have you checked if you are using correct configuration?
- Did you try online tool?
Description
Carriage Return characters (\r) found within parsed XML are incorrectly converted to newline characters (\n).
I did a quick scan of the source code and found a likely culprit:
const parseXml = function(xmlData) {
xmlData = xmlData.replace(/\r\n?/g, "\n"); //TODO: remove this line
That pretty clearly replaces any \r character (and possibly \r\n pair) with \n.
The online tool does not exhibit this issue because browser node access APIs encode Carriage Return "strings" (the character \ followed by r) as \\r. The regular expression no longer matches. See:
> "1) \r 2) \\r 3) \n 4) \\n 5) \r\n 6) \\r\\n".replace(/\r\n?/g, "\n")
'1) \n 2) \\r 3) \n 4) \\n 5) \n 6) \\r\\n'
Input
The XML that exhibits this issue is of the form:
<properties object="" engine="">
<property type="string" name="x" state="changed">
<![CDATA[This is a carriage return \r...]]>
</property>
<property type="string" name="y" state="changed">
<![CDATA[\r]]>
</property>
</properties>
Code
The code is pretty straightforward.
const XML_OPTIONS_NO_TAG_PARSE: fastXMLParser.X2jOptionsOptional = {
attributeNamePrefix: "@",
ignoreAttributes: false,
parseAttributeValue: false,
parseTagValue: false,
textNodeName: "#value",
};
const XML_PARSER_NO_TAG_PARSE = new fastXMLParser.XMLParser(XML_OPTIONS_NO_TAG_PARSE);
// ...
const parsed = XML_PARSER_NO_TAG_PARSE.parse(xmlData);
After that code runs, the parsed text node content has \n instead of the expected \r.
Output
Running the above results in the following JSON:
{
"properties": {
"property": [
{
"#value": "This is a carriage return \n...",
"@type": "string",
"@name": "x",
"@state": "changed"
},
{
"#value": "\n",
"@type": "string",
"@name": "y",
"@state": "changed"
},
],
"@object": "",
"@engine": ""
}
}
Expected Data
I expect the following output:
{
"properties": {
"property": [
{
"#value": "This is a carriage return \r...",
"@type": "string",
"@name": "x",
"@state": "changed"
},
{
"#value": "\r",
"@type": "string",
"@name": "y",
"@state": "changed"
},
],
"@object": "",
"@engine": ""
}
}
Would you like to work on this issue?
- Yes
- No
- Lenguaje dominante
- JavaScript
- Estrellas
- 3.1k
- Forks
- 398
- Merge medio
- 3 d 9 h
- PR fusionados (30 d)
- 1
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de NaturalIntelligence/fast-xml-parser
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
NaturalIntelligence/fast-xml-parser#890 · 1 comentario ·
Los mantenedores suelen responder en 4 días
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
NaturalIntelligence/fast-xml-parser#888 · 2 comentarios ·
Los mantenedores suelen responder en 4 días
-
ignoreDeclaration does not ignore lower case doctype declarationQuizá libre de nuevo Un pull request para esta issue se cerró sin fusionarse. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
NaturalIntelligence/fast-xml-parser#870 · 2 comentarios ·
Los mantenedores suelen responder en 4 días
-
CLI crashes with an uncaught exception when the input file is missingPosiblemente ocupada @troclaux la tomó hace 2 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 25/100
NaturalIntelligence/fast-xml-parser#894 · 1 comentario ·
Los mantenedores suelen responder en 4 días
-
Numeric character references (A, A) are not decoded unless htmlEntities is enabledPosiblemente ocupada @guocn la tomó hace 3 días. Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 64/100
NaturalIntelligence/fast-xml-parser#892 · 2 comentarios ·
Los mantenedores suelen responder en 4 días
Todos los issues de NaturalIntelligence/fast-xml-parser
Issues similares
-
Plaid sync fails and rolls back when a removed pending transaction was matched by a bank ruleAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
bigcapitalhq/bigcapital#1544 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
help wanted kind/bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
meshery/meshery.io#3112 ·
Los mantenedores suelen responder en 2 días
-
area:docs type:chore
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
bulkhead-labs/tailsuite#31 ·
-
dependencies javascript
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
gems-uff/noworkflow#470 ·
Los mantenedores suelen responder en 3 días
-
product / auth product / console product / sites product / storage
Dificultad 1/5 Menos de una hora Aptitud para principiantes 84/100
Los mantenedores suelen responder en 1 día