Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Los literales XML facilitan la lectura de XML de un origen y su transformación a un nuevo formato XML. Puede aprovechar las consultas LINQ para recuperar el contenido que se va a transformar o cambiar el contenido de un documento existente a un nuevo formato XML.
En el ejemplo de este tema se transforma el contenido de un documento de origen XML en HTML para que se vea en un explorador.
Nota:
El equipo puede mostrar nombres o ubicaciones diferentes para algunos de los elementos de la interfaz de usuario de Visual Studio en las instrucciones siguientes. La edición de Visual Studio que tiene y la configuración que usa determinan estos elementos. Para obtener más información, consulte Personalizando el IDE.
Para transformar un documento XML
En Visual Studio, cree un nuevo proyecto de Visual Basic en la plantilla de proyecto Aplicación de consola .
Haga doble clic en el archivo Module1.vb creado en el proyecto para modificar el código de Visual Basic. Agregue el código siguiente al
Sub MaindelModule1módulo. Este código crea el documento XML de origen como un XDocument objeto .Dim catalog = <?xml version="1.0"?> <Catalog> <Book id="bk101"> <Author>Garghentini, Davide</Author> <Title>XML Developer's Guide</Title> <Price>44.95</Price> <Description> An in-depth look at creating applications with <technology>XML</technology>. For <audience>beginners</audience> or <audience>advanced</audience> developers. </Description> </Book> <Book id="bk331"> <Author>Spencer, Phil</Author> <Title>Developing Applications with Visual Basic .NET</Title> <Price>45.95</Price> <Description> Get the expert insights, practical code samples, and best practices you need to advance your expertise with <technology>Visual Basic .NET</technology>. Learn how to create faster, more reliable applications based on professional, pragmatic guidance by today's top <audience>developers</audience>. </Description> </Book> </Catalog>Cómo: Cargar XML desde un archivo, una cadena o una secuencia.
Después del código para crear el documento XML de origen, agregue el código siguiente para recuperar todos los
<Book>elementos del objeto y transformarlos en un documento HTML. La lista de<Book>elementos se crea mediante una consulta LINQ que devuelve una colección de XElement objetos que contienen el HTML transformado. Puede usar expresiones incrustadas para colocar los valores del documento de origen en el nuevo formato XML.El documento HTML resultante se escribe en un archivo mediante el Save método .
Dim htmlOutput = <html> <body> <%= From book In catalog.<Catalog>.<Book> Select <div> <h1><%= book.<Title>.Value %></h1> <h3><%= "By " & book.<Author>.Value %></h3> <h3><%= "Price = " & book.<Price>.Value %></h3> <h2>Description</h2> <%= TransformDescription(book.<Description>(0)) %> <hr/> </div> %> </body> </html> htmlOutput.Save("BookDescription.html")Después
Sub MaindeModule1, agregue un nuevo método (Sub) para transformar un<Description>nodo en el formato HTML especificado. El código llama a este método en el paso anterior y se usa para conservar el formato de los<Description>elementos.Este método reemplaza los subelementos del
<Description>elemento por HTML. ElReplaceWithmétodo se usa para conservar la ubicación de los subelementos. El contenido transformado del<Description>elemento se incluye en un elemento de párrafo HTML (<p>). La Nodes propiedad se usa para recuperar el contenido transformado del<Description>elemento. Esto garantiza que los subelementos se incluyan en el contenido transformado.Agregue el código siguiente después
Sub MaindeModule1.Public Function TransformDescription(ByVal desc As XElement) As XElement ' Replace <technology> elements with <b>. Dim content = (From element In desc...<technology>).ToList() If content.Count > 0 Then For i = 0 To content.Count - 1 content(i).ReplaceWith(<b><%= content(i).Value %></b>) Next End If ' Replace <audience> elements with <i>. content = (From element In desc...<audience>).ToList() If content.Count > 0 Then For i = 0 To content.Count - 1 content(i).ReplaceWith(<i><%= content(i).Value %></i>) Next End If ' Return the updated contents of the <Description> element. Return <p><%= desc.Nodes %></p> End FunctionGuarde los cambios.
Presione F5 para ejecutar el código. El documento guardado resultante será similar al siguiente:
<?xml version="1.0"?> <html> <body> <div> <h1>XML Developer's Guide</h1> <h3>By Garghentini, Davide</h3> <h3>Price = 44.95</h3> <h2>Description</h2> <p> An in-depth look at creating applications with <b>XML</b>. For <i>beginners</i> or <i>advanced</i> developers. </p> <hr /> </div> <div> <h1>Developing Applications with Visual Basic .NET</h1> <h3>By Spencer, Phil</h3> <h3>Price = 45.95</h3> <h2>Description</h2> <p> Get the expert insights, practical code samples, and best practices you need to advance your expertise with <b>Visual Basic .NET</b>. Learn how to create faster, more reliable applications based on professional, pragmatic guidance by today's top <i>developers</i>. </p> <hr /> </div> </body> </html>