2011-08-03 13 views
6

¿Hay algún truco o utilidad que pueda tomar un archivo XML y convertir el archivo en una cadena larga para usar dentro del código C#? No quiero tener que copiar y pegar manualmente cada línea en el archivo XML. Quiero que cada línea en el archivo sea una línea de cuerda en mi código C# y luego tenga un "+" al final de la línea.Tomar el archivo XML y convertirlo en una cadena larga para la codificación de C#

+1

¿Qué estás tratando de resolver? Esto suena muy extraño. –

Respuesta

6

No es una cuestión de programación, pero aquí es lo que está buscando: http://inedo.com/downloads/smartpaster

+0

+1; suena como una herramienta ordenada. Libre/OSS también :) –

+0

Plugin increíble! gracias –

0

no puedes enviar la ruta del XML en File.ReadAllText (ruta)?

string xmlContent = System.IO.File.ReadAllText(pathToXML); 

El mismo se puede hacer para obtener una matriz de cadenas ...

string[] xmlContent = System.IO.File.ReadAllLines(pathToXML); 
3

Tener un gran archivo incrustado en su código C# como una cadena literal es realmente una mala idea. Es particularmente mala idea tener líneas separadas concatenadas con el operador + porque las cadenas son inmutables y estarías creando un trillón de objetos que se descartan instantáneamente. Chris señala que el compilador realizará la concatenación literal en tiempo de compilación.

Se podía leer en la línea de XML como una cadena con una sola línea:

string my_string = File.ReadAllText("xmlfile.xml"); 

Si usted está tratando de incrustar el archivo de datos en exe de su proyecto, entonces se puede hacer eso con los recursos del proyecto .

+0

+1 para señalar las cadenas son inmutables y la creación de objetos en exceso. – Tim

+0

Si las cadenas son literales, entonces no habría concatenación en el tiempo de ejecución, sucedería en tiempo de compilación. –

+0

"estarías creando un trillón de objetos que se descartarán al instante": no es cierto para los literales de cadena. El compilador se encargará de eso y solo colocará un solo literal de cadena ya concatenado en el código IL. –

6

utilice el editor de

Se puede pegar el XML en un archivo nuevo en Visual Studio, y el uso de expresiones regulares de búsqueda y reemplazo para arreglar el documento.

  • cotizaciones de evacuación y otros personajes que causan problemas
  • Anexar " al principio y al final de la línea, y + hasta el final de la línea.

Luego solo tiene que regresar y agregar un nombre de variable al comienzo, un punto y coma al final, y pegarlo en su documento de código fuente.

A partir de ahí, puede formatear el documento de código fuente (para sangrarlo bien) a través de Editar -> Avanzado -> Formatear documento.

Otra opción aquí es hacer uso de literales literales literales, al agregar @ antes de la primera cita. Luego se mantendrán las nuevas líneas, y puede evitar las comillas con "" en lugar de \".

, reflexionar sobre el problema

archivos XML que se almacenan en las cadenas son algo difícil de editar, y parte de la derrota el punto de XML - Ser humano editable. Para tratar con esto, podría considerar agregar el XML a su proyecto

  • Puede agregarlo a su proyecto como contenido y establecer las propiedades en el archivo para copiarlo en el directorio de compilación.A continuación, utilice los métodos apropiados XmlDocument load-from-file, o simplemente File.ReadAllText.

La ventaja (y la desventaja potencial) aquí es que puede editar el archivo después de la compilación. La desventaja es que debe implementar el archivo Xml junto con su ensamblaje.

  • Puede agregar el XML a su proyecto como un recurso incrustado. Luego puede usar Assembly.GetManifestResourceStream para sacar los datos del archivo.

La desventaja (y la ventaja potencial) es que no puede editar el archivo después de la compilación. La ventaja es que no tiene que implementar el archivo Xml junto con su ensamblaje.

Hacer esto hace que sea mucho más fácil para el desarrollador editar el archivo de lo que sería si el Xml se metiera en un literal de cadena.

0
string fileContent = File.ReadAllText(pathToFile)) 
         .Replace(Environment.NewLine, "+"); 
Cuestiones relacionadas