我想使用网络服务创建树结构。 我使用自下而上的 Web 服务技术来创建简单的算术运算。 我无法理解如何使用 Web 服务构建树。 有办法实现吗?
使用递归定义,例如:
expr = expr1 operand expr2 | node
expr1 = expr
expr2 = expr
operand = '+' | '-'
node = number
然后您可以使用 JSON 或 XML 直接对其进行编码
15 + 3 - 2 变成
{ "expr" :
{ "expr1": { "expr1":"15" "operand":"+" "expr2":"3"}
"operand": "-"
"expr2": "2"}}
或在 xml 中
<expr>
<expr1>
<expr1>15</expr1>
<operand>+</operand>
<expr2>3</expr2>
</expr1>
<operand>+</operand>
<expr2>2</expr2>
</expr>
在服务中,您可以行走树或建造树。我不确定您是否将该服务视为消费者或生产者。
如果您使用 Axis2 在 Groovy 中实现 Web 服务,您可以创建一个生成器来生成 Axis2 低级 Axiom API 调用:
package example
import groovy.util.BuilderSupport
import org.apache.axiom.om.OMAbstractFactory
import org.apache.axiom.om.OMElement
import org.apache.axiom.om.OMFactory
import org.apache.axiom.om.OMNamespace
class OMElementBuilder extends BuilderSupport {
OMElement result
String namespace
OMElementBuilder(namespace) {
this.namespace = namespace
}
def createNode(name) {
return createNode(name, null, null)
}
def createNode(name, value) {
return createNode(name, null, value)
}
def createNode(name, Map attributes) {
return createNode(name, attributes, null)
}
def createNode(name, Map attributes, value) {
OMFactory fact = OMAbstractFactory.getOMFactory()
OMNamespace omNs = fact.createOMNamespace(namespace, "ns")
OMElement node = fact.createOMElement(name, omNs)
if (value) {
fact.createOMText(node, value)
}
return node
}
void setParent(parent, child) {
parent.addChild(child)
}
void nodeCompleted(parent, node) {
if (!parent) {
result = node
}
}
}
任何任意 XML 结构都可以轻松创建,如下所示:
package example
import org.apache.axis2.AxisFault
import org.apache.axiom.om.OMElement
import javax.xml.namespace.QName
public class BankService {
// withdraw operation
public OMElement withdraw(OMElement requestElement) {
// Build the response
def builder = new OMElementBuilder("http://example")
builder.withdrawResponse() {
balance("1000")
additionalInfo() {
item() {
message("hello world")
}
item() {
message("hello world")
}
item() {
message("hello world")
}
item() {
message("hello world")
}
}
}
return builder.result
}
}
有关使用树和 Web 服务的重要技巧! 我喜欢Ever Green Tree Service如何照顾树木,使它们看起来最好。他们的专家帮助确保每棵树都健康美丽。如果您需要树木方面的帮助,请致电他们