如何在XML输出中显示属性的名称而不是“项目”

我正在编写一个WSDL文件,它正在工作。但是,输出结果并不完全符合我喜欢的内容。这样的话,我已经定义输出消息:如何在XML输出中显示属性的名称而不是“项目”

<message name="serviceResponse"> 

<part name="code" type="xsd:string"/>

<part name="description" type="xsd:string"/>

<part name="results" element="tns:myProperty"/>

</message>

而且在<类型>标签,我有:

<xsd:element name="myProperty"> 

<xsd:complexType>

<xsd:sequence>

<xsd:element name="name" type="xsd:string"/>

<xsd:element name="description" type="xsd:string"/>

<xsd:element name="id" type="xsd:int"/>

<xsd:element name="date" type="xsd:date"/>

</xsd:sequence>

</xsd:complexType>

</xsd:element>

对此,我得到:

<SOAP-ENV:serviceResponse> 

<code xsi:type="xsd:string">001</code>

<description xsi:type="xsd:string">Successful</description>

<results SOAP-ENC:arrayType="SOAP-ENC:Array[2]" xsi:type="SOAP-ENC:Array">

<item SOAP-ENC:arrayType="xsd:ur-type[7]" xsi:type="SOAP-ENC:Array">

<item xsi:type="xsd:string">John</item>

<item xsi:type="xsd:string">Director</item>

<item xsi:type="xsd:int">21</item>

<item xsi:type="xsd:string">2012-10-16</item>

</item>

<item SOAP-ENC:arrayType="xsd:ur-type[7]" xsi:type="SOAP-ENC:Array">

<item xsi:type="xsd:string">Smith</item>

<item xsi:type="xsd:string">Programmer</item>

<item xsi:type="xsd:int">88</item>

<item xsi:type="xsd:string">2012-10-18</item>

</item>

</results>

</SOAP-ENV:serviceResponse></SOAP-ENV:Body>

我会预期要达到这样的“效果”标签内以下,而不是一堆“项目” S:

<myProperty SOAP-ENC:arrayType="xsd:ur-type[7]" xsi:type="SOAP-ENC:Array"> 

<name xsi:type="xsd:string">John</name>

<description xsi:type="xsd:string">Director</description>

<id xsi:type="xsd:int">21</id>

<date xsi:type="xsd:string">2012-10-16</date>

</myProperty>

<myProperty SOAP-ENC:arrayType="xsd:ur-type[7]" xsi:type="SOAP-ENC:Array">

<name xsi:type="xsd:string">Smith</name>

<description xsi:type="xsd:string">Programmer</description>

<id xsi:type="xsd:int">88</id>

<date xsi:type="xsd:string">2012-10-18</date>

</myProperty>

任何人都可以请开灯吗?由于

回答:

我从观看另一篇文章解决了这个问题:WSDL list of complexType HOWTO- define, return from a service?

没有DTD定义所要求的。无论如何感谢so。

我所做的略有不同。我没有使用名为“myProperty”的元素,而是直接使用名称“myProperty”定义了一个complexType。它只是工作。

<xsd:complexType name="myProperty"> 

<xsd:sequence>

<xsd:element name="name" type="xsd:string"/>

<xsd:element name="description" type="xsd:string"/>

<xsd:element name="id" type="xsd:int"/>

<xsd:element name="date" type="xsd:date"/>

</xsd:sequence>

</xsd:complexType>

<xsd:element name="serviceResponse">

<xsd:complexType>

<xsd:sequence>

<xsd:element maxOccurs="unbounded" minOccurs="0" name="myResult" nillable="true" type="tns:myProperty"/>

</xsd:sequence>

</xsd:complexType>

</xsd:element>

输出正是我所期待的:

<myProperty xsi:type="ns1:myProperty"> 

<name xsi:type="xsd:string">Smith</name>

<description xsi:type="xsd:string">Programmer</description>

<id xsi:type="xsd:int">88</id>

<date xsi:type="xsd:date">2012-10-18</date>

</myProperty>

回答:

DTD定义为您的myProperty的标签正确。

财产以后这样的:

<!ELEMENT myProperty (name,description,id,date)> 

<!ELEMENT name(#PCDATA)>

<!ELEMENT description(#PCDATA)>

<!ELEMENT id(#PCDATA)>

<!ELEMENT date(#PCDATA)>

以上是 如何在XML输出中显示属性的名称而不是“项目” 的全部内容, 来源链接: utcz.com/qa/262400.html

回到顶部