<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java%2FGWT%2FXML</id>
		<title>Java/GWT/XML - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java%2FGWT%2FXML"/>
		<link rel="alternate" type="text/html" href="http://jexp.ru/index.php?title=Java/GWT/XML&amp;action=history"/>
		<updated>2026-04-07T04:14:07Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://jexp.ru/index.php?title=Java/GWT/XML&amp;diff=7103&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://jexp.ru/index.php?title=Java/GWT/XML&amp;diff=7103&amp;oldid=prev"/>
				<updated>2010-06-01T06:35:48Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 06:35, 1 июня 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://jexp.ru/index.php?title=Java/GWT/XML&amp;diff=7102&amp;oldid=prev</id>
		<title> в 18:01, 31 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://jexp.ru/index.php?title=Java/GWT/XML&amp;diff=7102&amp;oldid=prev"/>
				<updated>2010-05-31T18:01:44Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== GWT and XML ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 * Copyright 2006 Google Inc.&lt;br /&gt;
 * &lt;br /&gt;
 * Licensed under the Apache License, Version 2.0 (the &amp;quot;License&amp;quot;); you may not&lt;br /&gt;
 * use this file except in compliance with the License. You may obtain a copy of&lt;br /&gt;
 * the License at&lt;br /&gt;
 * &lt;br /&gt;
 * http://www.apache.org/licenses/LICENSE-2.0&lt;br /&gt;
 * &lt;br /&gt;
 * Unless required by applicable law or agreed to in writing, software&lt;br /&gt;
 * distributed under the License is distributed on an &amp;quot;AS IS&amp;quot; BASIS, WITHOUT&lt;br /&gt;
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the&lt;br /&gt;
 * License for the specific language governing permissions and limitations under&lt;br /&gt;
 * the License.&lt;br /&gt;
 */&lt;br /&gt;
package com.google.gwt.sample.simplexml.client;&lt;br /&gt;
import com.google.gwt.core.client.EntryPoint;&lt;br /&gt;
import com.google.gwt.user.client.HTTPRequest;&lt;br /&gt;
import com.google.gwt.user.client.ResponseTextHandler;&lt;br /&gt;
import com.google.gwt.user.client.ui.FlexTable;&lt;br /&gt;
import com.google.gwt.user.client.ui.FlowPanel;&lt;br /&gt;
import com.google.gwt.user.client.ui.HTML;&lt;br /&gt;
import com.google.gwt.user.client.ui.HTMLTable;&lt;br /&gt;
import com.google.gwt.user.client.ui.Label;&lt;br /&gt;
import com.google.gwt.user.client.ui.RootPanel;&lt;br /&gt;
import com.google.gwt.user.client.ui.TabPanel;&lt;br /&gt;
import com.google.gwt.xml.client.Document;&lt;br /&gt;
import com.google.gwt.xml.client.Element;&lt;br /&gt;
import com.google.gwt.xml.client.Node;&lt;br /&gt;
import com.google.gwt.xml.client.NodeList;&lt;br /&gt;
import com.google.gwt.xml.client.XMLParser;&lt;br /&gt;
/**&lt;br /&gt;
 * A very simple XML Example where we take a customer profile and display it on&lt;br /&gt;
 * a page.&lt;br /&gt;
 */&lt;br /&gt;
public class SimpleXML implements EntryPoint {&lt;br /&gt;
  private static final String XML_LABEL_STYLE = &amp;quot;xmlLabel&amp;quot;;&lt;br /&gt;
  private static final String USER_TABLE_LABEL_STYLE = &amp;quot;userTableLabel&amp;quot;;&lt;br /&gt;
  private static final String USER_TABLE_STYLE = &amp;quot;userTable&amp;quot;;&lt;br /&gt;
  private static final String NOTES_STYLE = &amp;quot;notes&amp;quot;;&lt;br /&gt;
  public void onModuleLoad() {&lt;br /&gt;
    HTTPRequest.asyncGet(&amp;quot;customerRecord.xml&amp;quot;, new ResponseTextHandler() {&lt;br /&gt;
      public void onCompletion(String responseText) {&lt;br /&gt;
        // In the real world, this text would come as a RPC response. This&lt;br /&gt;
        // technique is great for testing and samples though!&lt;br /&gt;
        renderXML(responseText);&lt;br /&gt;
      }&lt;br /&gt;
      private FlexTable createOrderTable(FlowPanel xmlParsed, String label) {&lt;br /&gt;
        HTML orderTableLabel = new HTML(&amp;quot;&amp;lt;h2&amp;gt;&amp;quot; + label + &amp;quot;&amp;lt;/h2&amp;gt;&amp;quot;);&lt;br /&gt;
        xmlParsed.add(orderTableLabel);&lt;br /&gt;
        FlexTable orderTable = new FlexTable();&lt;br /&gt;
        orderTable.setStyleName(USER_TABLE_STYLE);&lt;br /&gt;
        orderTable.setBorderWidth(3);&lt;br /&gt;
        orderTable.getRowFormatter().setStyleName(0, USER_TABLE_LABEL_STYLE);&lt;br /&gt;
        orderTable.setText(0, 0, &amp;quot;Order ID&amp;quot;);&lt;br /&gt;
        orderTable.setText(0, 1, &amp;quot;Item&amp;quot;);&lt;br /&gt;
        orderTable.setText(0, 2, &amp;quot;Ordered On&amp;quot;);&lt;br /&gt;
        orderTable.setText(0, 3, &amp;quot;Street&amp;quot;);&lt;br /&gt;
        orderTable.setText(0, 4, &amp;quot;City&amp;quot;);&lt;br /&gt;
        orderTable.setText(0, 5, &amp;quot;State&amp;quot;);&lt;br /&gt;
        orderTable.setText(0, 6, &amp;quot;Zip&amp;quot;);&lt;br /&gt;
        xmlParsed.add(orderTable);&lt;br /&gt;
        return orderTable;&lt;br /&gt;
      }&lt;br /&gt;
      /**&lt;br /&gt;
       * Creates the xml representation of xmlText. xmlText is assumed to have&lt;br /&gt;
       * been validated for structure on the server.&lt;br /&gt;
       * &lt;br /&gt;
       * @param xmlText xml text&lt;br /&gt;
       * @param xmlParsed panel to display customer record&lt;br /&gt;
       */&lt;br /&gt;
      private void customerPane(String xmlText, FlowPanel xmlParsed) {&lt;br /&gt;
        Document customerDom = XMLParser.parse(xmlText);&lt;br /&gt;
        Element customerElement = customerDom.getDocumentElement();&lt;br /&gt;
        // Must do this if you ever use a raw node list that you expect to be&lt;br /&gt;
        // all elements.&lt;br /&gt;
        XMLParser.removeWhitespace(customerElement);&lt;br /&gt;
        // Customer Name&lt;br /&gt;
        String nameValue = getElementTextValue(customerElement, &amp;quot;name&amp;quot;);&lt;br /&gt;
        String title = &amp;quot;&amp;lt;h1&amp;gt;&amp;quot; + nameValue + &amp;quot;&amp;lt;/h1&amp;gt;&amp;quot;;&lt;br /&gt;
        HTML titleHTML = new HTML(title);&lt;br /&gt;
        xmlParsed.add(titleHTML);&lt;br /&gt;
        // Customer Notes&lt;br /&gt;
        String notesValue = getElementTextValue(customerElement, &amp;quot;notes&amp;quot;);&lt;br /&gt;
        Label notesText = new Label();&lt;br /&gt;
        notesText.setStyleName(NOTES_STYLE);&lt;br /&gt;
        notesText.setText(notesValue);&lt;br /&gt;
        xmlParsed.add(notesText);&lt;br /&gt;
        // Pending orders UI setup&lt;br /&gt;
        FlexTable pendingTable = createOrderTable(xmlParsed, &amp;quot;Pending Orders&amp;quot;);&lt;br /&gt;
        FlexTable completedTable = createOrderTable(xmlParsed, &amp;quot;Completed&amp;quot;);&lt;br /&gt;
        completedTable.setText(0, 7, &amp;quot;Shipped by&amp;quot;);&lt;br /&gt;
        // Fill Orders Table&lt;br /&gt;
        NodeList orders = customerElement.getElementsByTagName(&amp;quot;order&amp;quot;);&lt;br /&gt;
        int pendingRowPos = 0;&lt;br /&gt;
        int completedRowPos = 0;&lt;br /&gt;
        for (int i = 0; i &amp;lt; orders.getLength(); i++) {&lt;br /&gt;
          Element order = (Element) orders.item(i);&lt;br /&gt;
          HTMLTable table;&lt;br /&gt;
          int rowPos;&lt;br /&gt;
          if (order.getAttribute(&amp;quot;status&amp;quot;).equals(&amp;quot;pending&amp;quot;)) {&lt;br /&gt;
            table = pendingTable;&lt;br /&gt;
            rowPos = ++pendingRowPos;&lt;br /&gt;
          } else {&lt;br /&gt;
            table = completedTable;&lt;br /&gt;
            rowPos = ++completedRowPos;&lt;br /&gt;
          }&lt;br /&gt;
          int columnPos = 0;&lt;br /&gt;
          fillInOrderTableRow(customerElement, order, table, rowPos, columnPos);&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      private void fillInOrderTableRow(Element customerElement, Element order,&lt;br /&gt;
          HTMLTable table, int rowPos, int columnPos) {&lt;br /&gt;
        // Order ID&lt;br /&gt;
        String orderId = order.getAttribute(&amp;quot;id&amp;quot;);&lt;br /&gt;
        table.setText(rowPos, columnPos++, orderId);&lt;br /&gt;
        // Item&lt;br /&gt;
        Element item = (Element) order.getElementsByTagName(&amp;quot;item&amp;quot;).item(0);&lt;br /&gt;
        String itemUPC = item.getAttribute(&amp;quot;upc&amp;quot;);&lt;br /&gt;
        String itemName = item.getFirstChild().getNodeValue();&lt;br /&gt;
        Label itemLabel = new Label(itemUPC);&lt;br /&gt;
        itemLabel.setTitle(itemName);&lt;br /&gt;
        table.setWidget(rowPos, columnPos++, itemLabel);&lt;br /&gt;
        // Ordered On&lt;br /&gt;
        String orderedOnValue = getElementTextValue(customerElement,&lt;br /&gt;
          &amp;quot;orderedOn&amp;quot;);&lt;br /&gt;
        table.setText(rowPos, columnPos++, orderedOnValue);&lt;br /&gt;
        // Address&lt;br /&gt;
        Element address = (Element) order.getElementsByTagName(&amp;quot;address&amp;quot;).item(&lt;br /&gt;
          0);&lt;br /&gt;
        XMLParser.removeWhitespace(address);&lt;br /&gt;
        NodeList lst = address.getChildNodes();&lt;br /&gt;
        for (int j = 0; j &amp;lt; lst.getLength(); j++) {&lt;br /&gt;
          Element next = (Element) lst.item(j);&lt;br /&gt;
          String addressPartText = next.getFirstChild().getNodeValue();&lt;br /&gt;
          table.setText(rowPos, columnPos++, addressPartText);&lt;br /&gt;
        }&lt;br /&gt;
        // Shipped By (optional attribute)&lt;br /&gt;
        NodeList shippedByList = order.getElementsByTagName(&amp;quot;shippingInfo&amp;quot;);&lt;br /&gt;
        if (shippedByList.getLength() == 1) {&lt;br /&gt;
          Element shippedBy = (Element) shippedByList.item(0);&lt;br /&gt;
          // Depending upon the shipper, different attributes might be&lt;br /&gt;
          // available, so XML carries the display info&lt;br /&gt;
          FlexTable shippedByTable = new FlexTable();&lt;br /&gt;
          shippedByTable.getRowFormatter().setStyleName(0,&lt;br /&gt;
            USER_TABLE_LABEL_STYLE);&lt;br /&gt;
          shippedByTable.setBorderWidth(1);&lt;br /&gt;
          NodeList shippedByParts = shippedBy.getChildNodes();&lt;br /&gt;
          for (int j = 0; j &amp;lt; shippedByParts.getLength(); j++) {&lt;br /&gt;
            Node next = shippedByParts.item(j);&lt;br /&gt;
            Element elem = (Element) next;&lt;br /&gt;
            shippedByTable.setText(0, j, elem.getAttribute(&amp;quot;title&amp;quot;));&lt;br /&gt;
            shippedByTable.setText(1, j, elem.getFirstChild().getNodeValue());&lt;br /&gt;
          }&lt;br /&gt;
          table.setWidget(rowPos, columnPos++, shippedByTable);&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      /**&lt;br /&gt;
       * Utility method to return the values of elements of the form &amp;lt;myTag&amp;gt;tag&lt;br /&gt;
       * value&amp;lt;/myTag&amp;gt;&lt;br /&gt;
       */&lt;br /&gt;
      private String getElementTextValue(Element parent, String elementTag) {&lt;br /&gt;
        // If the xml is not coming from a known good source, this method would&lt;br /&gt;
        // have to include safety checks.&lt;br /&gt;
        return parent.getElementsByTagName(elementTag).item(0).getFirstChild()&lt;br /&gt;
          .getNodeValue();&lt;br /&gt;
      }&lt;br /&gt;
      private void renderXML(String xmlText) {&lt;br /&gt;
     &lt;br /&gt;
        final TabPanel tab = new TabPanel();&lt;br /&gt;
        final FlowPanel xmlSource = new FlowPanel();&lt;br /&gt;
        final FlowPanel xmlParsed = new FlowPanel();&lt;br /&gt;
        tab.add(xmlParsed, &amp;quot;Customer Pane&amp;quot;);&lt;br /&gt;
        tab.add(xmlSource, &amp;quot;XML Source&amp;quot;);&lt;br /&gt;
        tab.selectTab(0);&lt;br /&gt;
        RootPanel.get().add(tab);&lt;br /&gt;
        xmlPane(xmlText, xmlSource);&lt;br /&gt;
        customerPane(xmlText, xmlParsed);&lt;br /&gt;
      }&lt;br /&gt;
      /**&lt;br /&gt;
       * Show the raw XML.&lt;br /&gt;
       * &lt;br /&gt;
       * @param xmlText&lt;br /&gt;
       * @param xmlSource&lt;br /&gt;
       */&lt;br /&gt;
      private void xmlPane(String xmlText, final FlowPanel xmlSource) {&lt;br /&gt;
        xmlText = xmlText.replaceAll(&amp;quot;&amp;lt;&amp;quot;, &amp;quot;&amp;amp;#60;&amp;quot;);&lt;br /&gt;
        xmlText = xmlText.replaceAll(&amp;quot;&amp;gt;&amp;quot;, &amp;quot;&amp;amp;#62;&amp;quot;);&lt;br /&gt;
        Label xml = new HTML(&amp;quot;&amp;lt;pre&amp;gt;&amp;quot; + xmlText + &amp;quot;&amp;lt;/pre&amp;gt;&amp;quot;, false);&lt;br /&gt;
        xml.setStyleName(XML_LABEL_STYLE);&lt;br /&gt;
        xmlSource.add(xml);&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;/div&gt;</summary>
			</entry>

	</feed>