<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=198786&amp;view=findpost&amp;p=1661035</guid>
        <pubDate>Sat, 11 Aug 2007 12:03:24 +0000</pubDate>
        <title>Создание структуры XML</title>
        <link>https://forum.sources.ru/index.php?showtopic=198786&amp;view=findpost&amp;p=1661035</link>
        <description><![CDATA[wind: <div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">import java.io.File;</div><div class="code_line">&nbsp;</div><div class="code_line">import javax.xml.parsers.DocumentBuilder;</div><div class="code_line">import javax.xml.parsers.DocumentBuilderFactory;</div><div class="code_line">import javax.xml.parsers.ParserConfigurationException;</div><div class="code_line">import javax.xml.transform.OutputKeys;</div><div class="code_line">import javax.xml.transform.Transformer;</div><div class="code_line">import javax.xml.transform.TransformerException;</div><div class="code_line">import javax.xml.transform.TransformerFactory;</div><div class="code_line">import javax.xml.transform.dom.DOMSource;</div><div class="code_line">import javax.xml.transform.stream.StreamResult;</div><div class="code_line">&nbsp;</div><div class="code_line">import org.w3c.dom.Document;</div><div class="code_line">import org.w3c.dom.Element;</div><div class="code_line">import org.w3c.dom.Node;</div><div class="code_line">&nbsp;</div><div class="code_line">public class DocumentConstructor {</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;/**</div><div class="code_line">&nbsp;&nbsp; &nbsp; * Создание XML-документа.</div><div class="code_line">&nbsp;&nbsp; &nbsp; */</div><div class="code_line">&nbsp;&nbsp; &nbsp;public static Document constructDocument() throws ParserConfigurationException {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;documentBuilderFactory.setValidating(false);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;documentBuilderFactory.setNamespaceAware(false);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Document document = documentBuilder.newDocument();</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Element root = newElement(document, document, &quot;PresentationInfo&quot;, null);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;newAttribute(document, root, &quot;Importance&quot;, &quot;High&quot;);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;newElement(document, root, &quot;Author&quot;, &quot;Romanov&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;newElement(document, root, &quot;Title&quot;, &quot;Захват земли&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;newElement(document, root, &quot;Description&quot;, &quot;About marsians taking control over Earth&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;newElement(document, root, &quot;PublicationDate&quot;, &quot;10-May-1996&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;newElement(document, root, &quot;Lang&quot;, &quot;ru&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;newElement(document, root, &quot;PageCount&quot;, &quot;2&quot;);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return document;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;static Element newElement(Document document, Node parent, String name, String value) {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Element newElement = document.createElement(name);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if (parent != null) {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;parent.appendChild(newElement);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if (value != null) {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;newElement.appendChild(</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;document.createTextNode(value)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return newElement;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;static Attr newAttribute(Document document, Node parent, String name, String value) {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Attr newAttribute = document.createAttribute(name);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if (parent != null) {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;parent.getAttributes().setNamedItem(newAttribute);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if (value != null) {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;newAttribute.setValue(value);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return newAttribute;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;/**</div><div class="code_line">&nbsp;&nbsp; &nbsp; * Сохранение XML-документа в файл. </div><div class="code_line">&nbsp;&nbsp; &nbsp; */</div><div class="code_line">&nbsp;&nbsp; &nbsp;public static void saveDocument(Document document, File file) throws TransformerException {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;TransformerFactory transformerFactory = TransformerFactory.newInstance();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Transformer transformer = transformerFactory.newTransformer();</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;transformer.setOutputProperty(OutputKeys.ENCODING, &quot;utf-8&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;transformer.setOutputProperty(OutputKeys.INDENT, &quot;yes&quot;);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;transformer.transform(</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;new DOMSource(document), new StreamResult(file)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;);</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">}</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
Метод constructDocument() примера создаёт XML-документ со следующей структурой:<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&#60;PresentationInfo Importance=&quot;High&quot;&#62;</div><div class="code_line">&nbsp;&nbsp; &nbsp;&#60;Author&#62;Romanov&#60;/Author&#62;</div><div class="code_line">&nbsp;&nbsp; &nbsp;&#60;Title&#62;Захват земли&#60;/Title&#62;</div><div class="code_line">&nbsp;&nbsp; &nbsp;&#60;Description&#62;About marsians taking control over Earth&#60;/Description&#62;</div><div class="code_line">&nbsp;&nbsp; &nbsp;&#60;PublicationDate&#62;10-May-1996&#60;/PublicationDate&#62;</div><div class="code_line">&nbsp;&nbsp; &nbsp;&#60;Lang&#62;ru&#60;/Lang&#62;</div><div class="code_line">&nbsp;&nbsp; &nbsp;&#60;PageCount&#62;2&#60;/PageCount&#62;</div><div class="code_line">&#60;/PresentationInfo&#62;</div></ol></div></div></div></div>]]></description>
        <author>wind</author>
        <category>Java FAQ</category>
      </item>
	
      </channel>
      </rss>
	