ActionScript 3 හි SOAP වෙබ් සේවාවක් වෙත “ශුන්‍ය” (සැබෑ වාසගම!) ලබා දෙන්නේ කෙසේද?


4636

අපට සේවකයෙකු සිටී, ඔහුගේ වාසගම ශුන්‍යය. සෙවුම් පදය ලෙස එම අවසාන නම භාවිතා කළ විට අපගේ සේවක සෙවීමේ යෙදුම මරා දමනු ලැබේ (එය දැන් බොහෝ විට සිදු වේ). ලැබුණු දෝෂය (ස්තූතියි ෆිද්ලර්!):

<soapenv:Fault>
   <faultcode>soapenv:Server.userException</faultcode>
   <faultstring>coldfusion.xml.rpc.CFCInvocationException: [coldfusion.runtime.MissingArgumentException : The SEARCHSTRING parameter to the getFacultyNames function is required but was not passed in.]</faultstring>

හුරුබුහුටි, හාහ්?

පරාමිති වර්ගය වේ string.

මම භාවිතා කරන්නේ:

  • WSDL ( SOAP )
  • ෆ්ලෙක්ස් 3.5
  • ActionScript 3
  • සීතල විලයනය 8

වෙබ් සේවය කොල්ඩ්ෆියුෂන් පිටුවකින් වස්තුවක් ලෙස ඇමතීමේදී දෝෂය සිදු නොවන බව සලකන්න .


6
විශේෂිත ගැටළුව සමඟ එය ඔබට එතරම් උදව් නොකරනු ඇත, නමුත් SOAP 1.2 මඟින් ශුන්‍ය අගයන් සඳහා ඉඩ ලබා දේ, w3.org/TR/2001/WD-soap12-20010709/#_Toc478383513
JensG

6
මට හැඟීමක් තියෙනවා එයට ඩේව් නූල් සම්බන්ධයි.
ජෝර්ජ් ගිබ්සන්

2
අවම වශයෙන් එයට චක් නොරිස් සම්බන්ධ නොවේ. කේතයෙන් ඔහුගෙන් stay ත්ව
SDsolar

42
සේවකයා තම නම වෙනස් කිරීමට සලකා බැලුවාද?
Tatranskymedved

11
ඔහු සැබවින්ම සලකා බැලිය යුත්තේ පොයින්ටර් බල්ලෙකු මිල දී ගෙන ඔහුට නුල් පොයින්ටර් ලෙස හැඳින්වීමයි.
ඇන්ටෝනියෝ අල්වරෙස්

Answers:


1109

එය ලුහුබැඳීම

මුලදී මම සිතුවේ මෙය බලහත්කාරයෙන් nullලබා ගන්නා බලහත්කාර දෝෂයක් "null"බවත් පරීක්ෂණයක් "null" == nullසමත් වන බවත්ය. එය නෙමෙයි. මම කිට්ටුයි, ඒත් හරිම වැරදියි. ඒ ගැන කණගාටුයි!

මම එතැන් සිට වින්ඩර්ෆ්ල්.නෙට් හි බොහෝ විහිළු කිරීම් සහ කේතය සොයා ගැනීම සිදු කර ඇත්තෙමිmx.rpc.xml.* . 1795 වන පේළියේ XMLEncoder(3.5 ප්‍රභවයේ), දී setValue, සියලු XMLEncoding දක්වා උනු

currentChild.appendChild(xmlSpecialCharsFilter(Object(value)));

එය අත්‍යවශ්‍යයෙන්ම සමාන වේ:

currentChild.appendChild("null");

මෙම කේතය, මගේ මුල් ෆෙඩෙල්ට අනුව, හිස් XML අංගයක් ලබා දෙයි. නමුත් ඇයි?

හේතුව

දෝෂ වාර්තාවක් මත ජස්ටින් එනතුරු commenter අනුව Flex-33664 , පහත සඳහන් එම බෑගය රැගෙන කොල්කරුවන් වේ (මගේ පසුගිය පරීක්ෂණ දෙකක් බලන්න වීණාවක් මෙම තහවුරු කරන):

var thisIsNotNull:XML = <root>null</root>;
if(thisIsNotNull == null){
    // always branches here, as (thisIsNotNull == null) strangely returns true
    // despite the fact that thisIsNotNull is a valid instance of type XML
}

විට currentChild.appendChildවැල සම්මත "null", එය පළමු මූල XML අංගයක් පෙළ සමග වැළඳ එය null, පසුව ශූන්ය ප්රායෝගික එරෙහිව බව අංගයක් පරීක්ෂා. මෙය දුර්වල සමානාත්මතා පරීක්ෂණයකි, එබැවින් එක්කෝ ශුන්‍ය අඩංගු XML ශුන්‍ය වර්ගයට බල කෙරෙනු ඇත, නැතහොත් ශුන්‍ය වර්ගය "ශුන්‍ය" නූල අඩංගු මූල xml මූලද්‍රව්‍යයකට බල කෙරේ, සහ පරීක්ෂණය අසමත් විය යුතු තැන සමත් වේ. එක් විසඳුමක් වනුයේ “ශුන්‍යතාවය” සඳහා XML (හෝ ඕනෑම දෙයක්, සැබවින්ම) පරීක්ෂා කිරීමේදී දැඩි සමානාත්මතා පරීක්ෂණ භාවිතා කිරීමයි.

විසඳුමක්

ඇක්ෂන් ස්ක්‍රිප්ට් හි සෑම නරක අනුවාදයකම මෙම දෝෂය නිවැරදි කිරීමට මට සිතිය හැකි එකම සාධාරණ ක්‍රියාමාර්ගය වන්නේ “ශුන්‍ය” සඳහා ක්ෂේත්‍ර පරීක්ෂා කිරීම සහ ඒවා CDATA අගයන් ලෙස ගැලවීමයි .

CDATA අගයන් යනු කේතකරණ / විකේතනය කිරීමේ ගැටළු ඇති කළ හැකි සමස්ත පෙළ අගයක් විකෘති කිරීමට වඩාත් සුදුසු ක්‍රමයයි. නිදසුනක් ලෙස, හෙක්ස් කේතන ක්‍රමය තනි අක්ෂර සඳහා අදහස් කෙරේ. ඔබ මූලද්‍රව්‍යයක සම්පූර්ණ පිටපතෙන් ගැලවී යන විට CDATA අගයන් වඩාත් කැමති වේ. මෙයට ලොකුම හේතුව එය මිනිස් කියවීමේ හැකියාව පවත්වා ගැනීමයි.


298

මත xkcd සටහනක් වන බොබී මේස වෙබ් අඩවිය පරිශීලක දත්ත අවිධිමත් අර්ථ ගැනීම සඳහා වන හොඳ උපදෙස් ඇත (මේ අවස්ථාවේ දී, වැල "NULL") SQL ඇතුළු විවිධ භාෂා, දී විමසුම් ColdFusion .

මෙය ගැටලුවේ මූලාශ්‍රයද යන ප්‍රශ්නයෙන් පැහැදිලි නැති අතර පළමු පිළිතුරට (ව්‍යුහයක පරාමිතීන් කාවැද්දීම) අදහස් දැක්වීමේදී සඳහන් කළ විසඳුම එය වෙනත් දෙයක් විය හැකි බව පෙනේ.


239

ගැටළුව Flex හි SOAP එන්කෝඩරයේ විය හැකිය. ඔබගේ ෆ්ලෙක්ස් යෙදුමේ SOAP එන්කෝඩරය දිගු කිරීමට උත්සාහ කර ශුන්‍ය අගය හසුරුවන ආකාරය බැලීමට වැඩසටහන නිදොස් කරන්න.

මගේ අනුමානය නම්, එය NaN (අංකයක් නොවේ) ලෙස සම්මත කර ඇත. මෙය SOAP පණිවිඩය සලකුණු නොකිරීමේ ක්‍රියාවලිය යම් කලෙක අවුල් කරනු ඇත (විශේෂයෙන් JBoss 5 සේවාදායකයේ ...). මට මතකයි SOAP එන්කෝඩරය දිගු කර NaN හසුරුවන ආකාරය පිළිබඳ පැහැදිලි පරීක්‍ෂණයක් සිදු කළා.


12
name = "Null" ඇත්තෙන්ම ප්‍රයෝජනවත් වේ, එය NaN හා සම්බන්ධ විය යුත්තේ කෙසේදැයි මම නොදනිමි.
eckes

129

number doc_180 ට නිවැරදි සංකල්පයක් තිබුනි, ඔහු සංඛ්‍යා කෙරෙහි අවධානය යොමු කර ඇති අතර, මුල් පෝස්ටරයට නූල් සම්බන්ධ ගැටළු තිබේ.

විසඳුම වන්නේ mx.rpc.xml.XMLEncoderගොනුව වෙනස් කිරීමයි . මෙය 121 වන පේළියයි:

    if (content != null)
        result += content;

(මම ෆ්ලෙක්ස් 4.5.1 එස්ඩීකේ දෙස බැලුවෙමි; රේඛා අංක වෙනත් අනුවාදයන්ට වඩා වෙනස් විය හැකිය.)

මූලික වශයෙන්, වලංගු කිරීම අසමත් වන්නේ 'අන්තර්ගතය අහෝසි වන නිසා වන අතර එම නිසා ඔබේ තර්කය පිටතට යන SOAP පැකට්ටුවට එකතු නොවේ; මේ අනුව අතුරුදහන් වූ පරාමිති දෝෂයකි.

වලංගු කිරීම ඉවත් කිරීම සඳහා ඔබ මෙම පන්තිය දීර් extend කළ යුතුය. එවිට දාමය ඉහළට විශාල හිමබෝලයක් ඇත, ඔබේ නවීකරණය කරන ලද XMLEncoder භාවිතා කිරීම සඳහා SOAPEncoder වෙනස් කිරීම, පසුව ඔබේ වෙනස් කරන ලද SOAPEncoder භාවිතා කිරීම සඳහා මෙහෙයුම වෙනස් කිරීම, ඉන්පසු ඔබේ විකල්ප මෙහෙයුම් පන්තිය භාවිතා කිරීම සඳහා වෙබ් සේවාව වෙනස් කිරීම.

මම ඒ සඳහා පැය කිහිපයක් ගත කළ නමුත් මට ඉදිරියට යා යුතුයි. බොහෝ විට එය දිනක් හෝ දෙකක් ගතවනු ඇත.

ඔබ පමණක් XMLEncoder මාර්ගය හදන්න සහ සමහර කරන්න හැකි වනු ඇත වඳුරු යොදන පැචින් ඔබේ පන්තිය භාවිතා කිරීම සඳහා කිරීම කළ හැකිය.

ඔබ කෝල්ඩ් ෆියුෂන් සමඟ දුරස්ථ ඕබෙක්ට් / ඒඑම්එෆ් භාවිතා කිරීමට මාරු වුවහොත්, ශුන්‍යය කිසිදු ගැටළුවක් නොමැතිව සම්මත වන බව මම එකතු කරමි.


11/16/2013 යාවත්කාලීන කිරීම :

දුරස්ථ වස්තුව / AMF පිළිබඳ මගේ අවසන් අදහස් දැක්වීමට තවත් එක් මෑත එකතු කිරීමක් මා සතුව ඇත. ඔබ ColdFusion 10 භාවිතා කරන්නේ නම්; එවිට වස්තුවක ශුන්‍ය අගයක් ඇති ගුණාංග සේවාදායක පාර්ශවීය වස්තුවෙන් ඉවත් කරනු ලැබේ. එබැවින්, දේපල වෙත ප්‍රවේශ වීමට පෙර ඔබ එහි පැවැත්ම පරීක්ෂා කර බැලිය යුතුය නැතහොත් ඔබට ධාවන කාල දෝෂයක් ලැබෙනු ඇත.

මේ ආකාරයට පරීක්ෂා කරන්න:

<cfif (structKeyExists(arguments.myObject,'propertyName')>
 <!--- no property code --->
<cfelse>
 <!--- handle property  normally --->
</cfif>

මෙය ColdFusion 9 හි හැසිරීමේ වෙනසක්; එහිදී ශුන්‍ය ගුණාංග හිස් නූල් බවට පත්වේ.


සංස්කරණය කරන්න 12/6/2013

ශුන්‍යයන්ට සලකන්නේ කෙසේද යන්න පිළිබඳ ප්‍රශ්නයක් ඇති හෙයින්, “ශුන්‍ය” නූලක් වෙන් කර ඇති වචනයට ශුන්‍ය වන ආකාරය නිරූපණය කිරීමට ඉක්මන් නියැදි යෙදුමක් මෙන්න.

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
               xmlns:s="library://ns.adobe.com/flex/spark"
               xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" initialize="application1_initializeHandler(event)">
    <fx:Script>
        <![CDATA[
            import mx.events.FlexEvent;

            protected function application1_initializeHandler(event:FlexEvent):void
            {
                var s :String = "null";
                if(s != null){
                    trace('null string is not equal to null reserved word using the != condition');
                } else {
                    trace('null string is equal to null reserved word using the != condition');
                }

                if(s == null){
                    trace('null string is equal to null reserved word using the == condition');
                } else {
                    trace('null string is not equal to null reserved word using the == condition');
                }

                if(s === null){
                    trace('null string is equal to null reserved word using the === condition');
                } else {
                    trace('null string is not equal to null reserved word using the === condition');
                }
            }
        ]]>
    </fx:Script>
    <fx:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
    </fx:Declarations>
</s:Application>

හෝඩුවාවේ ප්‍රතිදානය:

! = තත්වය භාවිතා කරමින් ශුන්‍ය නූල් වෙන් කර ඇති වචනයට සමාන නොවේ

== කොන්දේසිය භාවිතා කරමින් ශුන්‍ය නූල් වෙන් කළ වචනයට සමාන නොවේ

=== කොන්දේසිය භාවිතා කරමින් ශුන්‍ය නූල් වෙන් කළ වචනයට සමාන නොවේ


8
Bo Reboog711 සේවකයාගේ අන්තිම නම වචනයේ පරිසමාප්ත අර්ථයෙන්ම “ශූන්‍යය”, “මගේ නම පැට් නූල්” යන වචන මාලාවයි. ඔබේ පිළිතුර සේවකයාගේ අවසාන නම ලබා දීමට අසමත් වේ. බෙන් බර්න්ස් විසින් විස්තර කර ඇති පරිදි ඇපෙන්ඩ් චිල්ඩ් () ක්‍රමය මඟින් “ශුන්‍ය” නුසුදුසු භාෂා සංකල්පයට නුසුදුසු ලෙස බල කෙරෙමින් පවතින බව ඔබ පිළිතුරු දෙයි. එහි ප්‍රති result ලය වන්නේ පද්ධතිය හෝ නුල් මහත්මිය සමඟ කටයුතු කිරීමට තවමත් අපොහොසත් වීමයි.
මැක්ස් ඩේමන්

2
AxMaxxDaymon මගේ පිළිතුර ඇත්ත වශයෙන්ම ඔබ වැරදියට වටහාගෙන ඇතැයි මම සිතමි. එය විසඳුමක් ඉදිරිපත් නොකරයි; ගැටලුව ඇතිවීමට හේතුව පැහැදිලි කිරීමකි; සහ අදාළ කේතය ෆ්ලෙක්ස් රාමුවෙන් උපුටා දක්වයි. මගේ මෑත සංස්කරණය සමහර විට අස්ථානගත වී ඇත; එය විකල්ප ප්‍රවේශයක් සාකච්ඡා කරන අතර මුල් ප්‍රශ්නයට directly ජුව සම්බන්ධ නොවේ.
ජෙෆ්රිහවුසර්

1
ඔබ නිවැරදි මාර්ගයේ ගමන් කරයි, නමුත් කේතයේ එම අවස්ථාවෙහිදී contentනූල "null"වන අතර, "ශුන්‍ය" == ශුන්‍ය ප්‍රතිලාභ අසත්‍ය වේ, එවිට පරීක්ෂණය අපේක්ෂිත පරිදි ක්‍රියා කරයි. ඒ වෙනුවට මම විශ්වාස කරන්නේ ගැටළුව XML.appendChild විසින් නූල් තර්කයක් හසුරුවන ආකාරය හා “ශුන්‍ය” නූල පමණක් අඩංගු මූල XML මූලද්‍රව්‍යයක් වචනානුසාරයෙන් බලහත්කාරයෙන් ලබා ගත හැකි ආකාරයයි null.
බෙන් බර්න්ස්

Bo Reboog711 මගේ ෆෙඩල් දෙස බලන්න. "null"! = null` නැවත පැමිණීම trueමෙහි අපේක්ෂිත හැසිරීමයි. ප්‍රතිවිරුද්ධ දෙය සිදුවුවහොත්, මෙය කේතකරණ ක්‍රියාවලියෙන් “ශුන්‍ය” නූල ඉවතලනු ඇත, ඇත්ත වශයෙන්ම එය ගැටලුවට හේතුව වනු ඇත. කෙසේ වෙතත්, මෙම පරීක්ෂණය සාර්ථක වන හෙයින්, බලහත්කාර දෝෂයක් හේතුවෙන් XML.appendChild එය ඉවතලන තුරු එන්කෝඩරය දිගටම පවතී.
බෙන් බර්න්ස්

4
කරදර නැහැ. ඔබට සැබෑ ගැටළුව දැකීමට අවශ්‍ය නම් var xml:XML = <root>null</root>; var s:String = (xml == null) ? "wtf? xml coerced to null?!!" : "xml not coerced to null."; trace(s);ඔබේ කේත නියැදියට එක් කරන්න.
බෙන් බර්න්ස්

65

සියළුම අක්ෂර ඒවායේ හෙක්ස්-වස්තුවට සමාන ලෙස පරිවර්තනය කරන්න. මෙම අවස්ථාවේ දී, Nullබවට පරිවර්තනය වේ&#4E;&#75;&#6C;&#6C;


41
කරුණාකර මෙය නොකරන්න. CDATA නිර්මාණය කරන ලද්දේ ඔබට සම්පූර්ණ පෙළ කොටසකින් ගැලවීමට අවශ්‍ය අවස්ථාවන්හිදී භාවිතා කිරීම සඳහා ය.
බෙන් බර්න්ස්

4
මම වැරදියි, නමුත් මම හිතන්නේ නැහැ එය අඩු කිරීම ඔබේ විසඳුම නොවන නිසා එය ක්‍රියාත්මක වන්නේ කෙසේද කියා. පළ කර ඇති විවිධාකාර විසඳුම් මගින් පැහැදිලි වන පරිදි, එක් පැහැදිලි ක්‍රමයක් නොමැති බැවින් ගැටළුව සුවදායී විසඳුමක් ඉල්ලා සිටින බව ඔබ මතක තබා ගත යුතුය. අවසාන වශයෙන්, මම CF නොදන්නා බව මතක තබා ගන්න, විකේතකය <message> <! පණිවිඩය>? එසේ නම්, CDATA සැබවින්ම විසඳුමක් ද?
doogle

7
මෙය ප්‍රති-රටාවක් බැවින් මම පහත් කොට සැලකුවෙමි. මෙම නඩුවේ දෝෂය CF හි නොමැත, එය ActionScript හි ඇත. කෙසේ වෙතත්, ඔබ හොඳ කරුණක් මතු කරයි. CDATA කේතීකරණය සඳහා මම මගේ ෆෙඩෙල්ට පරීක්ෂණයක් එක් කරමි.
බෙන් බර්න්ස්

51

එය Stringifying nullඅගය ActionScript වැල ලබා දෙනු ඇත "NULL". මගේ සැකය කෙනෙකු එය, ඒ නිසා, හොඳ අදහසක් වැල විකේතනය බව තීරණය කර ඇත ඇත "NULL"ලෙස nullඔවුන් පසු කරනා නිසා වෙන්න - ඔබ මෙහි දකින කඩා වැටුම් ඇති, nullඔවුන් කැමති වුණේ නැහැ විට වස්තූන් හා දත්ත-ගබඩාව නූල් ලබා, එය (එබැවින් ද එවැනි දෝෂයක් තිබේදැයි පරීක්ෂා කිරීමට වග බලා ගන්න).


ඔව්, මෙහි ඇති අවස්ථා ගණනාවක් තිබේ, එමඟින් අඩු කිරීම සඳහා තවත් නිදොස් කිරීම අවශ්‍ය වේ. 1) මෙහි භාවිතා කර ඇති WSDL, “NULL” යනු නූල් අගයක් සහ සත්‍ය ශුන්‍ය (හෝ මඟ හැරුණු) අගයක් ලෙස වෙන්කර හඳුනා ගැනීමට ප්‍රමාණවත්ද? 2) එසේ නම්, සේවාදායකයා අවසාන නම නිවැරදිව කේතනය කරන්නේද?
pimlottc

39

අනවසරයෙන්, සේවාදායකයාගේ පැත්තෙන් විශේෂ හැසිරවීමක් තිබීම, 'ශුන්‍ය' නූල කිසි විටෙකත් සිදු නොවන දෙයක් බවට පරිවර්තනය කිරීම, උදාහරණයක් ලෙස, XXNULLXX සහ සේවාදායකය වෙත නැවත පරිවර්තනය කිරීම සලකා බැලිය හැකිය.

එය ලස්සන නැත, නමුත් එය එවැනි මායිම් නඩුවක් සඳහා ගැටළුව විසඳනු ඇත.


32
XXNULLXX නමක් ද විය හැකිය. ඔබ දන්නේ නැහැ. සමහර විට ඉන්දුනීසියාවේ මිනිසුන්ට වාසගම නොමැති අතර අවශ්‍ය විටෙක ඔවුන්ගේ වාසගම ලෙස XXX හි ප්‍රභේදයක් භාවිතා කරයි.
gb.

3
එකම සංකල්පයකි, නමුත් දත්ත සමුදායේ සහ පෙරවදනෙහි ඇති සියලුම නම් යම් අක්ෂරයකින් යාවත්කාලීන කරන්න (1Null, 1Smith). සේවාදායකයා තුළ එම චරිතය ඉවත් කරන්න. ඇත්ත වශයෙන්ම මෙය රෙබූග්ගේ විසඳුමට වඩා මයිටා වැඩක් විය හැකිය.
බොබ්පෝල්

14
En බෙන්බර්න්ස් ඔව්, නමුත් මට මගේ දරුවා නම් කිරීමට අවශ්‍ය නම් කුමක් කළ &#78;&#117;&#108;&#108;යුතුද?
සයිරන්ස්

@ සයිරන්ස් එය ගැටලුවක් නොවේ. මගේ නම "<& quot;>" නම්, එය & quot; & lt; & amp; quot; & gt; & quot; ලෙස නිසි ලෙස ගැලවී යනු ඇතැයි මම බලාපොරොත්තු වෙමි. සැබෑ ගැටළුව වන්නේ යෙදුමක් නම් සඳහා අසාදු ලේඛනයක් භාවිතා කරන ආකාරයට හැසිරීමයි.
මිස්ටර් ලිස්ටර්

30

හොඳයි, මම හිතන්නේ ෆ්ලෙක්ස් විසින් SOAP එන්කෝඩරය ක්‍රියාත්මක කිරීම ශුන්‍ය අගයන් වැරදි ලෙස අනුක්‍රමණය කරන බවක් පෙනේ. ඒවා නූල් ශූන්‍යයක් ලෙස අනුක්‍රමණය කිරීම හොඳ විසඳුමක් ලෙස නොපෙනේ. විධිමත් ලෙස නිවැරදි අනුවාදය ශුන්‍ය අගයක් ලෙස පහත පරිදි වේ:

<childtag2 xsi:nil="true" />

එබැවින් "ශුන්‍ය" හි වටිනාකම වලංගු නූලක් මිස වෙන කිසිවක් නොවනු ඇත, එය ඔබ සොයන දේම වේ.

මම හිතන්නේ මෙය අපාචි ෆ්ලෙක්ස් තුළ සවි කිරීම එතරම් අපහසු නොවිය යුතුය. ජිරා ප්‍රශ්නයක් විවෘත කිරීමට හෝ අපාචේ-ෆ්ලෙක්ස් තැපැල් ලැයිස්තුවේ පුද්ගලයින් සම්බන්ධ කර ගැනීමට මම නිර්දේශ කරමි. කෙසේ වෙතත් මෙය සේවාදායකයාගේ පැත්ත පමණක් නිවැරදි කරයි. මේ ආකාරයෙන් කේතනය කර ඇති ශුන්‍ය අගයන් සමඟ වැඩ කිරීමට කෝල්ඩ් ෆියුෂන් සමත් වේ දැයි මට කිව නොහැක.

මෙයද බලන්න Radu Cotescu බ්ලොග් පශ්චාත් soapUI ඉල්ලීම් ශූන්ය වටිනාකම් යැවීමට කොපමණ .


6
මෙහි හොඳ තොරතුරු තිබේ, එබැවින් මම අවතක්සේරු නොකරමි, නමුත් එය අදහස් දැක්වීම වටී යැයි මම සිතුවෙමි. පෙරනිමියෙන්, මූලද්‍රව්‍යය සැකසීමෙන් XMLEncoder.as සත්‍ය nullඅගයක් නිසියාකාරව සංකේතවත් කරයි xsi:nil="true". ඇත්ත වශයෙන්ම ගැටළුව ක්‍රියාකාරී ස්ක්‍රිප්ට් වර්ගයම XML(එන්කෝඩරය නොවේ) නූල හසුරුවන ආකාරයට "null"පෙනේ.
බෙන් බර්න්ස්

22

එය kludge, නමුත් සඳහා අවම වශයෙන් දිග තියෙනවා උපකල්පනය SEARCHSTRING, චරිත 2 උදාහරණයක් ලෙස, substringමෙම SEARCHSTRINGදෙවන චරිතයක් පරාමිතිය ඒ වෙනුවට පරාමිතීන් දෙක ලෙස සමත්: SEARCHSTRING1 ("Nu")හා SEARCHSTRING2 ("ll"). Concatenateදත්ත සමුදාය විමසුම ක්රියාත්මක කරන විට ඒවා එකට.


32
මෙම වර්ගයේ ක්ලූඩ්ස් වළක්වා ගැනීම සඳහා සීඩීඒටීඒ එක්ස්එම්එල් පිරිවිතරයට එකතු කරන ලදී.
බෙන් බර්න්ස්

8
CDATA සමඟ "Null" වලින් ගැලවීමට අවශ්‍ය නැත, XML හි ශුන්‍ය මූල පදයක් වැනි දෙයක් නොමැත.
ekes

6
Eckeckes සමඟ එකඟ වන්න. CDATA පිළිබඳ මේ සියලු කතා ඇත්තේ මන්දැයි මට තේරෙන්නේ නැත. CDATA ප්‍රයෝජනවත් වන්නේ XML හි විශේෂ අරුතක් ඇති අක්ෂර වලින් ගැලවීමට පමණි. එකක්වත් නොවන: n, u, lXML යක විශේෂ semantics ඇත. "NULL" සහ "<! [CDATA [NULL]]>" XML විග්‍රහකයෙකුට සමාන වේ.
jasonkarns

9
@jasonkarns - මම 100% ක් එකඟ නැති බව යුතුය වැල / පෙළ node එකක් මතම ඊට අදාල පිළිබඳ කිසිවක් විශේෂ NULL, නමුත් pedantic වීමට, <blah>null</blah>හා <blah><![CDATA[null]]>ක XML ව්යාකරණ විග්රහ කිරීමට නොහැකි අයිතීන් ය. ඔවුන් එකම ප්‍රති results ල ලබා දිය යුතුය , කෙසේ වෙතත් ඒවා හැසිරවීමේ තාර්කික ප්‍රවාහය වෙනස් වේ. නම්‍යශීලී එක්ස්එම්එල් ක්‍රියාවට නැංවීමේදී ඇති වූ දෝෂයට පිළියමක් ලෙස අප ගසාකන්නේ මෙම බලපෑමයි. පෙළ කියවීමේ හැකියාව ආරක්ෂා කරන බැවින් වෙනත් ප්‍රවේශයන් සඳහා මම මේ වෙනුවෙන් පෙනී සිටිමි.
බෙන් බර්න්ස්
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.