我正在使用WSDL文件创建下面的代码 -
Class test_n0 As ArrayType_n1
Public test() As test_test2_n0
Sub NEW
End Sub
End Class
Class As test_test2_n0
Public t1 As StringType_n1
Public t2 As StringType_n1
Public t3 As StringType_n1
Sub NEW
End Sub
End Class
我无法在Lotus脚本中处理ArrayType。有人可以帮助我。
示例WSDL - 我无法复制整个..但它看起来像下面
<xs:complexType name="SDDBComputer2InstanceType">
<xs:sequence>
<xs:element name="test" type="cmn:StringType" nillable="true" minOccurs="0"/>
<xs:element name="test.hba" minOccurs="0">
<xs:complexType>
<xs:complexContent>
<xs:extension base="cmn:ArrayType">
<xs:sequence>
<xs:element name="test.hba" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:complexContent>
<xs:extension base="cmn:StructureType">
<xs:sequence>
<xs:element name="t1" type="cmn:StringType" nillable="true" minOccurs="0"/>
<xs:element name="t2" type="cmn:StringType" nillable="true" minOccurs="0"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
命名空间详细信息。
<definitions
xsi:schemaLocation="http://schemas.xmlsoap.org/wsdl/http://schemas.xmlsoap.org/wsdl/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:ns="http://schemas.hp.com/SM/7"
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
xmlns:http="http://schemas.xmlsoap.org/wsdl/http/">
我无法在lotusscript中处理数组。 Lotus脚本代码如下 -
Dim testSome_Sub As New test_n0
Dim testsome2_Sub As New test_test2_n0
testsome2_Sub.t1.Value = "some value"
testsome2_Sub.t2.Value = "some value"
testsome2_Sub.t3.Value = "some value"
Set testSome_Sub.test(0) = testsome2_Sub
//这是我遇到问题的地方,因为我将一个结构元素分配给数组。
答案 0 :(得分:1)
最后解决了。感谢@Simon提供的所有指导和帮助。
我在lotuscript代码中做了一些解决方法来重新声明这里声明的数组并且它有效。 启动Web服务并声明Web服务的所有其他元素后,我再次使用 -
声明了数组test()Redim test(10) as test_test2_n0
现在我可以在上面声明的数组中分配test_test2_n0(结构类型)的元素。
所以我的最终代码在这里 -
Web服务使用者 - 使用WSDL创建的注释 -
Class test_n0 As ArrayType_n1
Public test() As test_test2_n0
Sub NEW
End Sub
End Class
Class test_test2_n0 As StructureType_n1
Public t1 As StringType_n1
Public t2 As StringType_n1
Public t3 As StringType_n1
Sub NEW
End Sub
End Class
Notes代理中的示例代码 -
Dim testStruct_Sub As New test_test2_n0
Dim testArray_Sub As New test_n0
Redim test(10) as test_test2_n0
Set testStruct_Sub.t1= "Some Value"
Set testStruct_Sub.t2= "Some Value"
Set testStruct_Sub.t3= "Some Value"
Set testArray_Sub.test(0) = testStruct_Sub
我的学习 -
我花了很多时间来理解第二点,我发现Notes有局限性。
答案 1 :(得分:0)
您的命名空间看起来不对。我怀疑你删除了那些你无法发帖的内容。
据我所知,问题在于这条线?
<xs:extension base="cmn:ArrayType">
创建此类:
Class test_n0 As ArrayType_n1
Public test() As test_test2_n0
Sub NEW
End Sub
End Class
如果是这种情况,您需要检查cmn
的架构。这将在DEFINITIONS
标记中的名称空间中引用,在LS代码中引用为:
const n1 = "URL to Schema"
拥有该架构后,您需要了解它的结构。基于你的LS代码,它将是
的一种方法Public test() As test_test2_n0
test_test2
将在n0
架构中引用。您还需要检查。目前代码片段看起来有效,但我无法确认没有完整的WSDL / XSD文件(不是默认文件)。
除此之外,其他一些事情要检查。
将WSDL作为提供者导入Designer客户端。有时候如果有什么东西它不喜欢它会给出更具描述性的信息。
将WSDL作为Java使用者导入,并比较创建的对象与LotusScript,以查看不同之处(假设它作为Java导入)。
LotusScript对命名方法/变量有36个字符的限制。但我没有看到证据证明这是你的片段中的一个问题。
当Java是LotusScript时,LotusScript不区分大小写。所以你最终可以得到重复的引用。
LotusScript + WSDL不会检查彼此保留的关键字(例如,文本,文件,备注文档)。如果您有其中一个,则可能导致导入问题。