2011-05-23 16 views
16

En XML, ¿cómo declaro una matriz de enteros?definición de matriz en xml

puedo declarar como el siguiente:

<numbers type="array"> 
    <value>3</value> 
    <value>2</value> 
    <value>1</value> 
</numbers> 

pero puede ser no hay manera más simple como esto?

<numbers [3,2,1]></numbers> 

Respuesta

15

La segunda forma no es XML válido; quisiste decir <numbers>[3,2,1]</numbers>?

Si es así, se prefiere la primera porque todo lo que necesita para obtener los elementos de la matriz es la manipulación de XML. En el segundo, primero debe obtener el valor del elemento < números > a través de la manipulación de XML, luego, de alguna manera, analizar el texto [3,2,1] utilizando otra cosa.

O si realmente desea algún formato compacto, puede considerar el uso de JSON (que "nativamente" admite matrices). Pero eso depende de los requisitos de tu aplicación.

+0

Sí, estaría feliz de usar JSON o YAML, pero tengo que utilizar XML . Me parece un poco extraño que tenga que envolver cada número de mi matriz con las etiquetas y ... Es una sintaxis demasiado compleja para una cosa tan simple como la matriz de números. – Nick

+4

Siempre se puede envolverlos en algo más pequeño, como , pero XML no es conocida por su concisión ... – carlosfigueira

8

No, no hay una manera más simple. Solo puede perder el type=array.

<numbers> 
    <value>3</value> 
    <value>2</value> 
    <value>1</value> 
</numbers> 
+1

No creo que sea una buena ide para quitar el atributo type. Si '' incluye solo un elemento, no está claro que es una matriz. Cuando se especifica type como una matriz, será más fácil decirle a su analizador xml qué hacer con el objeto para evitar el análisis incoherente. – aross

1

Como su nombre es "números" Está claro que es una lista de número ... Así que una serie de número ... no hay necesidad del tipo de atributo ... Aunque me gusta el principio de la especificación el tipo de campo en un atributo de tipo ...

1

una vez que he visto una construcción tan interesante:

<Ids xmlns:id="http://schemas.microsoft.com/2003/10/Serialization/Arrays"> 
     <id:int>1787</id:int> 
</Ids> 
Cuestiones relacionadas