XML/Output: Difference between revisions

Content added Content deleted
(→‎{{header|Go}}: update for new template library, also added an error check)
No edit summary
Line 849: Line 849:
This produces:
This produces:
<lang xml><?xml version="1.0" encoding="UTF-8"?><CharacterRemarks><Character name="April">Bubbly: I'm &gt; Tam and &lt;= Emily</Character><Character name="Tam O'Shanter">Burns: "When chapman billies leave the street ..."</Character><Character name="Emily">Short &amp; shrift</Character></CharacterRemarks></lang>
<lang xml><?xml version="1.0" encoding="UTF-8"?><CharacterRemarks><Character name="April">Bubbly: I'm &gt; Tam and &lt;= Emily</Character><Character name="Tam O'Shanter">Burns: "When chapman billies leave the street ..."</Character><Character name="Emily">Short &amp; shrift</Character></CharacterRemarks></lang>

=={{header|NetRexx}}==
===Using DOM===
{{trans|Java}}
<lang NetRexx>/* NetRexx */

options replace format comments java crossref savelog symbols nobinary

import java.io.StringWriter

import javax.xml.parsers.DocumentBuilderFactory
import javax.xml.transform.Result
import javax.xml.transform.Source
import javax.xml.transform.Transformer
import javax.xml.transform.TransformerFactory
import javax.xml.transform.dom.DOMSource
import javax.xml.transform.stream.StreamResult

import org.w3c.dom.Document
import org.w3c.dom.Element

names = [String -
"April", "Tam O'Shanter", "Emily" -
]

remarks = [ String -
"Bubbly: I'm > Tam and <= Emily" -
, 'Burns: "When chapman billies leave the street ..."' -
, 'Short & shrift' -
]

do
-- Create a new XML document
doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument()

-- Append the root element
root = doc.createElement("CharacterRemarks")
doc.appendChild(root)

-- Read input data and create a new <Character> element for each name.
loop i_ = 0 to names.length - 1
character = doc.createElement("Character")
root.appendChild(character)
character.setAttribute("name", names[i_])
character.appendChild(doc.createTextNode(remarks[i_]))
end i_

-- Serializing XML in Java is unnecessary complicated
-- Create a Source from the document.
source = DOMSource(doc)

-- This StringWriter acts as a buffer
buffer = StringWriter()

-- Create a Result as a transformer target.
result = StreamResult(buffer)

-- The Transformer is used to copy the Source to the Result object.
transformer = TransformerFactory.newInstance().newTransformer()
transformer.setOutputProperty("indent", "yes")
transformer.transform(source, result)

-- Now the buffer is filled with the serialized XML and we can print it to the console.
say buffer.toString
catch ex = Exception
ex.printStackTrace
end

return
</lang>
;Output
<lang xml><?xml version="1.0" encoding="UTF-8" standalone="no"?>
<CharacterRemarks>
<Character name="April">Bubbly: I'm &gt; Tam and &lt;= Emily</Character>
<Character name="Tam O'Shanter">Burns: "When chapman billies leave the street ..."</Character>
<Character name="Emily">Short &amp; shrift</Character>
</CharacterRemarks>
</lang>

===Using the Streaming API for XML (StAX)===
<lang NetRexx>/* NetRexx */

options replace format comments java crossref savelog symbols nobinary

import java.io.StringWriter
import javax.xml.stream.XMLOutputFactory
import javax.xml.stream.XMLStreamWriter

names = [String -
"April", "Tam O'Shanter", "Emily" -
]

remarks = [ String -
"Bubbly: I'm > Tam and <= Emily" -
, 'Burns: "When chapman billies leave the street ..."' -
, 'Short & shrift' -
]

do
buffer = StringWriter()

out = XMLOutputFactory.newInstance().createXMLStreamWriter(buffer)

out.writeStartDocument("UTF-8", "1.0")
out.writeStartElement("CharacterRemarks")

loop i_ = 0 to names.length = 1
out.writeStartElement("Character")
out.writeAttribute("name", names[i_])
out.writeCharacters(remarks[i_])
out.writeEndElement()
end i_

out.writeEndElement()
out.writeEndDocument()

say buffer
catch ex = Exception
ex.printStackTrace
end

return
</lang>
;Output
<lang xml><?xml version="1.0" encoding="UTF-8"?><CharacterRemarks><Character name="April">Bubbly: I'm &gt; Tam and &lt;= Emily</Character></CharacterRemarks>
</lang>


=={{header|Objeck}}==
=={{header|Objeck}}==