瀏覽代碼

HPCC-13994 Document ONFAIL() for FROMXML and FROMJSON

Signed-off-by: Jim DeFabia <jamesdefabia@lexisnexis.com>
Jim DeFabia 8 年之前
父節點
當前提交
6bde4d520d

+ 35 - 2
docs/ECLLanguageReference/ECLR_mods/BltInFunc-FROMJSON.xml

@@ -8,8 +8,10 @@
       <primary>FROMJSON</primary>
     </indexterm><indexterm>
       <primary>FROMJSON function</primary>
-    </indexterm>(</emphasis><emphasis> record, jsonstring </emphasis><emphasis
-  role="bold">)</emphasis></para>
+    </indexterm>(</emphasis><emphasis> record, jsonstring
+  </emphasis>,<emphasis
+  role="bold">[ONFAIL(</emphasis><emphasis>transform</emphasis> <emphasis
+  role="bold">)])</emphasis></para>
 
   <para><informaltable colsep="1" frame="all" rowsep="1">
       <tgroup cols="2">
@@ -32,6 +34,20 @@
           </row>
 
           <row>
+            <entry>ONFAIL</entry>
+
+            <entry>Optional. Specifies a transform to handle errors in the
+            JSON.</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>transform</emphasis></entry>
+
+            <entry>A TRANSFORM structure matching the record structure of the
+            first parameter.</entry>
+          </row>
+
+          <row>
             <entry>Return:</entry>
 
             <entry>FROMJSON returns a single row (record).</entry>
@@ -57,6 +73,23 @@ rec := FROMJSON(namesRec,x);
 OUTPUT(rec);
 </programlisting>
 
+  <para>Example with Error handling and bad JSON:</para>
+
+  <programlisting>namesRec := RECORD  
+  UNSIGNED2 EmployeeID{xpath('EmpID')};  
+  STRING20 Firstname{xpath('FName')};  
+  STRING20 Lastname{xpath('LName')}; 
+END; 
+x := '{"FName": "malformedJSON""George" , "LName": "Jetson", "EmpID": 42}'; 
+
+namesRec createFailure() := 
+  TRANSFORM
+    SELF.FirstName := FAILMESSAGE;
+    SELF := [];
+  END;
+rec := FROMJSON(namesRec,x,ONFAIL(createFailure())); 	
+OUTPUT(rec);</programlisting>
+
   <para>See Also: <link linkend="ROW">ROW</link>, <link
   linkend="TOJSON">TOJSON</link></para>
 </sect1>

+ 37 - 4
docs/ECLLanguageReference/ECLR_mods/BltInFunc-FROMXML.xml

@@ -8,8 +8,9 @@
       <primary>FROMXML</primary>
     </indexterm><indexterm>
       <primary>FROMXML function</primary>
-    </indexterm>(</emphasis><emphasis> record, xmlstring </emphasis><emphasis
-  role="bold">)</emphasis></para>
+    </indexterm>(</emphasis><emphasis> record, xmlstring </emphasis>,<emphasis
+  role="bold">[ONFAIL(</emphasis><emphasis>transform</emphasis> <emphasis
+  role="bold">)])</emphasis></para>
 
   <para><informaltable colsep="1" frame="all" rowsep="1">
       <tgroup cols="2">
@@ -31,6 +32,20 @@
           </row>
 
           <row>
+            <entry>ONFAIL</entry>
+
+            <entry>Optional. Specifies a transform to handle errors in the
+            XML.</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>transform</emphasis></entry>
+
+            <entry>A TRANSFORM structure matching the record structure of the
+            first parameter.</entry>
+          </row>
+
+          <row>
             <entry>Return:</entry>
 
             <entry>FROMXML returns a single row (record).</entry>
@@ -52,9 +67,27 @@
   STRING10  Lastname{xpath('LName')};
 END;
 x := '&lt;Row&gt;&lt;FName&gt;George&lt;/FName&gt;&lt;LName&gt;Jetson&lt;/LName&gt;&lt;EmpID&gt;42&lt;/EmpID&gt;&lt;/Row&gt;'; 
-
 rec := FROMXML(namesRec,x);
 OUTPUT(rec);</programlisting>
 
-  <para>See Also: <link linkend="ROW">ROW</link>, <link linkend="TOXML">TOXML</link></para>
+  <para>Example with Error handling and bad XML:</para>
+
+  <programlisting>namesRec := RECORD
+  UNSIGNED2 EmployeeID{xpath('EmpID')};
+  STRING20  Firstname{xpath('FName')};
+  STRING20  Lastname{xpath('LName')};
+END;
+x := '&lt;Row&gt;&lt;FName&gt;George&lt;/FName&gt;&lt;LName&gt;&lt;unmatchedtag&gt;Jetson&lt;/LName&gt;&lt;EmpID&gt;42&lt;/EmpID&gt;&lt;/Row&gt;'; 
+
+namesRec createFailure() := 
+  TRANSFORM
+    SELF.FirstName := FAILMESSAGE;
+    SELF := [];
+  END;
+rec := FROMXML(namesRec,x,ONFAIL(createFailure()));
+OUTPUT(rec);
+</programlisting>
+
+  <para>See Also: <link linkend="ROW">ROW</link>, <link
+  linkend="TOXML">TOXML</link></para>
 </sect1>