⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 simplexml.java

📁 Google Web Toolkit (GWT)
💻 JAVA
字号:
/* * Copyright 2007 Google Inc. *  * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at *  * http://www.apache.org/licenses/LICENSE-2.0 *  * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */package com.google.gwt.sample.simplexml.client;import com.google.gwt.core.client.EntryPoint;import com.google.gwt.http.client.Request;import com.google.gwt.http.client.RequestBuilder;import com.google.gwt.http.client.RequestCallback;import com.google.gwt.http.client.RequestException;import com.google.gwt.http.client.Response;import com.google.gwt.user.client.Window;import com.google.gwt.user.client.ui.FlexTable;import com.google.gwt.user.client.ui.FlowPanel;import com.google.gwt.user.client.ui.HTML;import com.google.gwt.user.client.ui.HTMLTable;import com.google.gwt.user.client.ui.Label;import com.google.gwt.user.client.ui.RootPanel;import com.google.gwt.user.client.ui.TabPanel;import com.google.gwt.xml.client.Document;import com.google.gwt.xml.client.Element;import com.google.gwt.xml.client.Node;import com.google.gwt.xml.client.NodeList;import com.google.gwt.xml.client.XMLParser;/** * A very simple XML Example where we take a customer profile and display it on * a page. */public class SimpleXML implements EntryPoint {  private static final String XML_LABEL_STYLE = "xmlLabel";  private static final String USER_TABLE_LABEL_STYLE = "userTableLabel";  private static final String USER_TABLE_STYLE = "userTable";  private static final String NOTES_STYLE = "notes";  public void onModuleLoad() {    RequestBuilder requestBuilder = new RequestBuilder(RequestBuilder.GET,        "customerRecord.xml");    try {      requestBuilder.sendRequest(null, new RequestCallback() {        public void onError(Request request, Throwable exception) {          requestFailed(exception);        }        public void onResponseReceived(Request request, Response response) {          renderXML(response.getText());        }      });    } catch (RequestException ex) {      requestFailed(ex);    }  }  private FlexTable createOrderTable(FlowPanel xmlParsed, String label) {    HTML orderTableLabel = new HTML("<h2>" + label + "</h2>");    xmlParsed.add(orderTableLabel);    FlexTable orderTable = new FlexTable();    orderTable.setStyleName(USER_TABLE_STYLE);    orderTable.setBorderWidth(3);    orderTable.getRowFormatter().setStyleName(0, USER_TABLE_LABEL_STYLE);    orderTable.setText(0, 0, "Order ID");    orderTable.setText(0, 1, "Item");    orderTable.setText(0, 2, "Ordered On");    orderTable.setText(0, 3, "Street");    orderTable.setText(0, 4, "City");    orderTable.setText(0, 5, "State");    orderTable.setText(0, 6, "Zip");    xmlParsed.add(orderTable);    return orderTable;  }  /**   * Creates the xml representation of xmlText. xmlText is assumed to have been   * validated for structure on the server.   *    * @param xmlText xml text   * @param xmlParsed panel to display customer record   */  private void customerPane(String xmlText, FlowPanel xmlParsed) {    Document customerDom = XMLParser.parse(xmlText);    Element customerElement = customerDom.getDocumentElement();    // Must do this if you ever use a raw node list that you expect to be    // all elements.    XMLParser.removeWhitespace(customerElement);    // Customer Name    String nameValue = getElementTextValue(customerElement, "name");    String title = "<h1>" + nameValue + "</h1>";    HTML titleHTML = new HTML(title);    xmlParsed.add(titleHTML);    // Customer Notes    String notesValue = getElementTextValue(customerElement, "notes");    Label notesText = new Label();    notesText.setStyleName(NOTES_STYLE);    notesText.setText(notesValue);    xmlParsed.add(notesText);    // Pending orders UI setup    FlexTable pendingTable = createOrderTable(xmlParsed, "Pending Orders");    FlexTable completedTable = createOrderTable(xmlParsed, "Completed");    completedTable.setText(0, 7, "Shipped by");    // Fill Orders Table    NodeList orders = customerElement.getElementsByTagName("order");    int pendingRowPos = 0;    int completedRowPos = 0;    for (int i = 0; i < orders.getLength(); i++) {      Element order = (Element) orders.item(i);      HTMLTable table;      int rowPos;      if (order.getAttribute("status").equals("pending")) {        table = pendingTable;        rowPos = ++pendingRowPos;      } else {        table = completedTable;        rowPos = ++completedRowPos;      }      int columnPos = 0;      fillInOrderTableRow(customerElement, order, table, rowPos, columnPos);    }  }  private void fillInOrderTableRow(Element customerElement, Element order,      HTMLTable table, int rowPos, int columnPos) {    // Order ID    String orderId = order.getAttribute("id");    table.setText(rowPos, columnPos++, orderId);    // Item    Element item = (Element) order.getElementsByTagName("item").item(0);    String itemUPC = item.getAttribute("upc");    String itemName = item.getFirstChild().getNodeValue();    Label itemLabel = new Label(itemUPC);    itemLabel.setTitle(itemName);    table.setWidget(rowPos, columnPos++, itemLabel);    // Ordered On    String orderedOnValue = getElementTextValue(customerElement, "orderedOn");    table.setText(rowPos, columnPos++, orderedOnValue);    // Address    Element address = (Element) order.getElementsByTagName("address").item(0);    XMLParser.removeWhitespace(address);    NodeList lst = address.getChildNodes();    for (int j = 0; j < lst.getLength(); j++) {      Element next = (Element) lst.item(j);      String addressPartText = next.getFirstChild().getNodeValue();      table.setText(rowPos, columnPos++, addressPartText);    }    // Shipped By (optional attribute)    NodeList shippedByList = order.getElementsByTagName("shippingInfo");    if (shippedByList.getLength() == 1) {      Element shippedBy = (Element) shippedByList.item(0);      // Depending upon the shipper, different attributes might be      // available, so XML carries the display info      FlexTable shippedByTable = new FlexTable();      shippedByTable.getRowFormatter().setStyleName(0, USER_TABLE_LABEL_STYLE);      shippedByTable.setBorderWidth(1);      NodeList shippedByParts = shippedBy.getChildNodes();      for (int j = 0; j < shippedByParts.getLength(); j++) {        Node next = shippedByParts.item(j);        Element elem = (Element) next;        shippedByTable.setText(0, j, elem.getAttribute("title"));        shippedByTable.setText(1, j, elem.getFirstChild().getNodeValue());      }      table.setWidget(rowPos, columnPos++, shippedByTable);    }  }  /**   * Utility method to return the values of elements of the form <myTag>tag   * value</myTag>   */  private String getElementTextValue(Element parent, String elementTag) {    // If the xml is not coming from a known good source, this method would    // have to include safety checks.    return parent.getElementsByTagName(elementTag).item(0).getFirstChild().getNodeValue();  }  private void renderXML(String xmlText) {    final TabPanel tab = new TabPanel();    final FlowPanel xmlSource = new FlowPanel();    final FlowPanel xmlParsed = new FlowPanel();    tab.add(xmlParsed, "Customer Pane");    tab.add(xmlSource, "XML Source");    tab.selectTab(0);    RootPanel.get().add(tab);    xmlPane(xmlText, xmlSource);    customerPane(xmlText, xmlParsed);  }  private void requestFailed(Throwable exception) {    Window.alert("Failed to send the request.  The error message was: "        + exception.getMessage());  }  /**   * Show the raw XML.   *    * @param xmlText   * @param xmlSource   */  private void xmlPane(String xmlText, final FlowPanel xmlSource) {    xmlText = xmlText.replaceAll("<", "&#60;");    xmlText = xmlText.replaceAll(">", "&#62;");    Label xml = new HTML("<pre>" + xmlText + "</pre>", false);    xml.setStyleName(XML_LABEL_STYLE);    xmlSource.add(xml);  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -