XML/Output: Difference between revisions

no edit summary
(→‎{{header|Go}}: update for new template library, also added an error check)
No edit summary
Line 849:
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>
 
=={{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}}==
Anonymous user