2

我已经使用 WSClient++ 来生成我的源代码。当我将空值传递给对象时,我希望在生成请求 XML 时,它应该在请求 XML 中包含空标记。但似乎在传递空值时它不会生成任何标签。例如:

SchoolRequest req = new SchoolRequest();
req.setName("Xyz");
req.setRoll(1);
req.setSub("CS");
req.setPunctual(null);

我希望请求 xml 是

<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://blah.blah.blah/" xmlns:ns4="http://abc.xyz/xml" xmlns:ns5="http://blah.blah.blah" xmlns:ns6="http://schemas.microsoft.com/2003/10/Serialization/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <soap:Header />
   <soap:Body>
      <ns4:GetSchoolInfo>
         <ns4:request>
            <ns4:Name>1021</ns4:Name>
            <ns4:Roll>1.0.2.1</ns4:Roll>
            <ns4:Sub>CS</ns4:Sub>
            <ns4:Punctual/>  <----Notice this tag
         </ns4:request>
      </ns4:GetSchoolInfo>
   </soap:Body>
</soap:Envelope>

我得到了什么

<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://blah.blah.blah/" xmlns:ns4="http://abc.xyz/xml" xmlns:ns5="http://blah.blah.blah" xmlns:ns6="http://schemas.microsoft.com/2003/10/Serialization/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <soap:Header />
   <soap:Body>
      <ns4:GetSchoolInfo>
         <ns4:request>
            <ns4:Name>1021</ns4:Name>
            <ns4:Roll>1.0.2.1</ns4:Roll>
            <ns4:Sub>CS</ns4:Sub>  <--Notice NO PUNCTUAL TAG
         </ns4:request>
      </ns4:GetSchoolInfo>
   </soap:Body>
</soap:Envelope>

我不知道这种行为。有什么我做错了吗?有人可以帮我解决这个问题吗?

4

1 回答 1

2
SchoolRequest req = new SchoolRequest();
req.setName("Xyz");
req.setRoll(1);
req.setSub("CS");
req.setPunctual(null);

尝试""而不是 null

req.setPunctual("");

或者" "

req.setPunctual(" ");

您可以在阅读时修剪此空间。

于 2015-01-13T06:27:35.380 回答