2009-02-11 12 views
33

así que estoy escribiendo algo de código de generación de XML, y se encontró que el siguiente valor del atributo se atornilla el formato XML:XML Entity for "/"?

"Jim/Bob" 

así que busqué en las Entidades XML usados ​​como secuencias de escape y todas las listas que vi hizo no incluir uno para la barra diagonal. ¿Me estoy perdiendo algo obvio aquí? Parece el tipo de cosa que le gustaría escapar ...

+3

¿Se puede definir "atornillar"? ¿Qué código estás usando para crear el XML? – AnthonyWJones

+1

Ok, resulta que no era/después de todo, era el "&" en otro atributo en la misma línea. ¡Eso explica por qué no hay una secuencia de escape para eso! – Alpants

+0

En retrospectiva, esta pregunta fue bastante estúpida, si alguien tiene el representante para eliminarlo o cerrarlo ... ¡deberían! – Alpants

Respuesta

38

La barra diagonal es válida tal cual y no necesita más codificación.

Los únicos caracteres reservados son:

> 
< 
& 
% 

Para aún más las entidades XML - http://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references

+3

'%' no necesita codificación en XML. '>' Puede necesitar codificación en una situación de nicho particular. '' '' O '' 'necesitará codificación dentro de los valores de los atributos (cualquiera que se haya usado como el delimitador para ese atributo). – bobince

+2

<, &, >, ",' ..... –

+0

No. Sin magia, sin nada. Nada me ayudó en mi caso. Solo 'formatted =" false "' me lo resolvió. –

0

Es probable que tenga un atributo restringido, como se define en el esquema XML.

No sé lo que quiere decir con el formato XML.

3

No puedo entender por qué un valor de "Jim/Bob" debería escaparse o causar problemas XML en absoluto.

4

No hay una referencia de entidad predefinida para él, pero puede usar una referencia de caracteres: "& # 47;".

Sin embargo, no necesita escaparse/para su inclusión en XML. Es posible que deba incluirlo para incluirlo en otra cosa, por ejemplo, una parte de ruta de URI. Pero primero tendrías que escapar para ese formato primero; la aplicación que recoge el URI no tendría forma de saber si la codificaste en XML o no.

4

No creo que los comentarios en este hilo sean completamente correctos ya que si usa un esquema (XSD) puede definir elementos con nombres Jim, Bob y Jim/Bob sin ningún problema. Pero cuando quiere definir el elemento y la entidad:

<names> 
    <Jim>Carrey</Jim> 
    <Bob>Jones</Bob> 
    <Jim/Bob>Six figured Hillbilly</Jim/Bob> 
</names> 

Los problemas son obvios.

+1

Gracias. Este es el problema que estaba teniendo. Necesitaba reemplazar un montón de caracteres inválidos del elemento xml con sustitutos válidos. –

6

Sé que resultó este no era el problema, pero pensé que sería útil mencionar que, además de la respuesta de bobince, la Fracción raya vertical entidad HTML &frasl; ve just like a forward slash. En caso de que alguien llegue a esta página en realidad quiere querer una entidad HTML para algo que represente una barra diagonal.

+1

El analizador SAX me estaba dando errores sobre una entidad referenciada pero no declarada, usando ⁄, así que usé el equivalente Unicode ⁄ y funciona muy bien. Gracias. – Lambart

+1

De hecho, @Lambart, yo no era tan específico; deberá usar la entidad '⁄' en XML, que también es, naturalmente, un código HTML válido, pero en HTML tiene la conveniencia adicional de utilizar la entidad HTML '⁄', más fácil de recordar. – sinisterstuf

+0

@bobince ha sugerido /, pero también existe / y – kurdtpage

3

FYI aunque una barra oblicua es XML válido, tenga en cuenta cómo se usa en sentido descendente. Lo usamos para conectarnos a una cola de bus de servicio azul. Azure generó claves con barras en las cadenas de conexión, pero luego se rompió silenciosamente cuando intentamos usarlas. Escapando de ellos con “&#47;” hecho funcionar

"Jim&#47;Bob" 
+1

¡la mejor solución! – avisper

Cuestiones relacionadas