GWT XML用法

本文概述

  • 模块XML格式
  • 解析XML
  • GWT XML上传
GWT XML(可扩展标记语言)使用自定义标签描述数据并将数据编码为纯文本。它更加灵活且易于操作。
模块XML格式 模块在XML文件中定义, 扩展名应为.gwt.xml。它位于项目包的根目录中。以下是使用标准项目结构的代码:
< module> < inherits name="com.google.gwt.user.User"/> < entry-point class="com.example.cal.client.CalendarApp"/> < /module>

解析XML 为了解析XML文本, 我们必须首先将原始XML文本解析为XM1 DOM结构。 DOM结构有助于数据导航。 XML解析器位于XMLParser类下。 XMLParser类由parse(String)静态方法组成, 该方法被调用以解析XML并返回Document对象。
为了处理解析期间发生的错误(例如, 如果XML格式不正确), 则XMLParser将抛出DOMException。如果解析成功, 则我们收到的Document对象代表内存中的XML文档。
成功解析后, 它将创建以下节点:
  • 元素-表示DOM元素, 由XML < someElement> < / someElement> 中的标记指定。
  • 文本-??表示元素的开始标记和结束标记之间的文本:< someElement> 此处是一些文本。< / someElement> 。
  • 注释-表示XML注释:< !-有关此数据的注释-> 。
  • Attr-表示元素的属性:< someElement myAttribute =“ 123” /> 。
实作
以下是包含电子邮件消息的XML代码:
< ?xml version="1.0" ?> < message> < header> < to displayName="srcmini" address="hr@srcmini.com" /> < from displayName="sssit" address=?hr@sssit.org" /> < sent> 2017-03-10T12:03:55Z< /sent> < subject> Re: GWT tutorial< /subject> < /header> < body> gwt tutorial is being developed.< /body> < /message>

下面的代码用于从xml提取信息:
private void parseMessage(String messageXml) { try { // parse the XML document into a DOM Document messageDom = XMLParser.parse(messageXml); // find the sender's display name in an attribute of the < from> tag Node fromNode = messageDom.getElementsByTagName("from").item(0); String from = ((Element)fromNode).getAttribute("displayName"); fromLabel.setText(from); // get the subject using Node's getNodeValue() function String subject = messageDom.getElementsByTagName("subject").item(0).getFirstChild().getNodeValue(); subjectLabel.setText(subject); // get the message body by explicitly casting to a Text node Text bodyNode = (Text)messageDom.getElementsByTagName("body").item(0).getFirstChild(); String body = bodyNode.getData(); bodyLabel.setText(body); } catch (DOMException e) { Window.alert("Could not parse XML document."); } }

GWT XML构造函数
建设者 描述
XMLTools() 它构造了不同的工具选项。
GWT XML通用方法
方法 描述
disableIEXMLHackaround() 它针对不能明确声明“ xml”名称空间前缀的MSXML错误, 禁用了Internet Explorer的解决方法。
loadWSDL(String wsdlURL, WSDLLoadCallback callback) 它加载WSDL文件并创建WebService实例, 该实例允许调用操作并将DataSources绑定到Web服务操作。
loadWSDL(String wsdlURL, WSDLLoadCallback callback, RPCRequest requestProperties) 它加载WSDL文件并创建WebService实例, 该实例允许调用操作并将DataSources绑定到Web服务操作。
loadWSDL(String wsdlURL, WSDLLoadCallback callback, RPCRequest requestProperties, boolean autoLoadImports) 它加载WSDL文件并创建WebService实例, 该实例允许调用操作并将DataSources绑定到Web服务操作。
loadXMLSchema(String schemaURL, XSDLoadCallback callback) 它加载包含XML模式定义的XML文件, 并创建DataSource和SimpleType对象以表示模式。
loadXMLSchema(String schemaURL, XSDLoadCallback callback, RPCRequest requestProperties) 它加载包含XML模式定义的XML文件, 并创建DataSource和SimpleType对象以表示模式。
nativeXMLAvailable() 如果当前浏览器公开了可用于Smart GWT XML操作(如Web服务绑定和XML处理)的XML解析器, 则返回true。
selectNodes(Object element, String expression) 它基于XPath表达式从XML元素或文档中检索一组节点。
selectNodes(Object element, String expression, Map namespaces) 它基于XPath表达式从XML元素或文档中检索一组节点。
toJS(Object elements) 它将XML片段转换为JavaScript集合。
GWT XML上传 在本节中, 我们将创建一个包含GWT文件上传和表单面板小部件的上传面板。它允许用户将zip文件上传到服务器。
前端设计
为了通过xml存储信息, 我们从两个面板(UploadPanel和DataStorePanel)设计了前端。
DataStorePanel.ui.xml
< !DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent"> < ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" xmlns:g="urn:import:com.google.gwt.user.client.ui" xmlns:f="urn:import:in.fins.client.widget"> < g:LayoutPanel> < g:layer left='10%' width='60%' top='10%' height='60%'> < g:VerticalPanel spacing="40"> < f:UploadPanel /> < /g:VerticalPanel> < /g:layer> < /g:LayoutPanel> < /ui:UiBinder>

上传面板
在此小部件中, 我们创建表单以上传文件, 并创建按钮以清除符号列表。
UploadPanel.ui.xml
< g:CaptionPanel captionText="Upload"> < g:HorizontalPanel> < g:VerticalPanel> < g:FormPanel ui:field="uploadForm" action="/upload"> < g:Grid> < g:row> < g:customCell> < g:Label text="Zip file" /> < /g:customCell> < g:customCell> < g:FileUpload name="uploadFormElement" /> < /g:customCell> < g:customCell> < g:Button text="Upload" ui:field="uploadButton" /> < /g:customCell> < g:customCell> < g:Hidden name="action" value="http://www.srcmini.com/uploadAndParse" /> < /g:customCell> < /g:row> < /g:Grid> < /g:FormPanel> < /g:VerticalPanel> < g:VerticalPanel> < g:FormPanel ui:field="clearListForm" action="/upload"> ....< /g:FormPanel> < /g:VerticalPanel> < /g:HorizontalPanel> < /g:CaptionPanel>

Upload.java
public UploadPanel() {initWidget(uiBinder.createAndBindUi(this)); uploadForm.setMethod(FormPanel.METHOD_POST); uploadForm.setEncoding(FormPanel.ENCODING_MULTIPART); }@UiHandler("uploadButton") void onUploadClick(ClickEvent event) { uploadForm.submit(); }@UiHandler("uploadForm") void onUploadFormSubmitComplete(SubmitCompleteEvent event) { StatusEvent se = new StatusEvent(event.getResults()); EventBus.get().fireEvent(se); }

【GWT XML用法】输出:
GWT XML用法

文章图片

    推荐阅读