本文概述
- 模块XML格式
- 解析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() | 它构造了不同的工具选项。 |
方法 | 描述 |
---|---|
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集合。 |
前端设计
为了通过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和vaadin的区别
- GWT与React的区别
- GWT和JSF的区别
- GWT和AngularJS的区别
- GWT UI Binder用法
- GWT教程介绍
- GWT测试
- GWT建议框
- GWT股票交易所应用程序示例