AllowNull (XmlDoc property): Difference between revisions
mNo edit summary |
mNo edit summary |
||
Line 5: | Line 5: | ||
the deserialization of an XML document that contains nodes | the deserialization of an XML document that contains nodes | ||
that have null characters (U+0000) in their values. | that have null characters (U+0000) in their values. | ||
A <var>Boolean</var> value of < | A <var>Boolean</var> value of <var>True</var> allows such deserializations. | ||
The default value, < | The default value, <var>False</var>, | ||
cancels the request if such a deserialization is attempted. | cancels the request if such a deserialization is attempted. | ||
For example, the following Element node is acceptable for deserialization | For example, the following Element node is acceptable for deserialization | ||
into an <var>XmlDoc</var> (using the <var>[[LoadXml (XmlDoc/XmlNode function)|LoadXml]]</var> method, for example) only if <var>AllowNull</var> | into an <var>XmlDoc</var> (using the <var>[[LoadXml (XmlDoc/XmlNode function)|LoadXml]]</var> method, for example) only if <var>AllowNull</var> | ||
is < | is <var>True</var>: | ||
<p class="code"><a>Element contains null: &#0;</a> | <p class="code"><a>Element contains null: &#0;</a> | ||
</p> | </p> | ||
Line 21: | Line 21: | ||
</p> | </p> | ||
The default value of <var>AllowNull</var> is < | The default value of <var>AllowNull</var> is <var>False</var>. | ||
<var>AllowNull</var> is new as of version 7.6 of the | <var>AllowNull</var> is new as of version 7.6 of the <var class="product">Sirius Mods</var>. | ||
==Syntax== | ==Syntax== | ||
{{Template:XmlDoc:AllowNull syntax}} | {{Template:XmlDoc:AllowNull syntax}} | ||
Line 43: | Line 43: | ||
<var>XmlDoc</var> that has <code>AllowNull=False</code>. | <var>XmlDoc</var> that has <code>AllowNull=False</code>. | ||
<li>All Unicode characters except null can always be stored | <li>All Unicode characters except null can always be stored | ||
in an <var>XmlDoc</var>, so setting <var>AllowNull</var> to < | in an <var>XmlDoc</var>, so setting <var>AllowNull</var> to <var>True</var> means ''all'' | ||
Unicode characters can be stored. | Unicode characters can be stored. | ||
If you were using the | If you were using the | ||
Line 49: | Line 49: | ||
characters in an <var>XmlDoc</var>, you can use <code>AllowNull=True</code> instead. | characters in an <var>XmlDoc</var>, you can use <code>AllowNull=True</code> instead. | ||
<li>Deserialization of Unicode characters that do not | <li>Deserialization of Unicode characters that do not | ||
translate to EBCDIC is not allowed unless the < | translate to EBCDIC is not allowed unless the <var>[[LoadXml (XmlDoc/XmlNode function)#allowUntrans|AllowUntranslatable]]</var> | ||
deserialization option is used. | deserialization option is used. | ||
<li>When providing EBCDIC characters to be stored in | <li>When providing EBCDIC characters to be stored in | ||
Line 65: | Line 65: | ||
In the following request, an Ebcdic X'FF' character requires a replacement | In the following request, an Ebcdic X'FF' character requires a replacement | ||
to avoid request cancellation, | to avoid request cancellation, | ||
but setting <var>AllowNull</var> to < | but setting <var>AllowNull</var> to <var>True</var> lets a null be added to the <var>XmlDoc</var>. | ||
<p class="code">Begin | <p class="code">Begin | ||
%d is object Xmldoc auto new | %d is object Xmldoc auto new |
Revision as of 17:55, 4 March 2011
Allow null characters in node values? (XmlDoc class)
This property indicates whether or not the method object XmlDoc allows
the deserialization of an XML document that contains nodes
that have null characters (U+0000) in their values.
A Boolean value of True allows such deserializations.
The default value, False,
cancels the request if such a deserialization is attempted.
For example, the following Element node is acceptable for deserialization into an XmlDoc (using the LoadXml method, for example) only if AllowNull is True:
<a>Element contains null: �</a>
If AllowNull=True
, null characters are also allowed for "direct setting"
of a node's value using one of the many Add or Insert methods.
For example:
%nod:AddElement('a', 'Element contains null:' With $X2C('00'))
The default value of AllowNull is False.
AllowNull is new as of version 7.6 of the Sirius Mods.
Syntax
%currentBoolean = doc:AllowNull doc:AllowNull = newBoolean
Syntax terms
%currentBoolean | The Boolean enumeration value of doc's AllowNull property. For more information about these enumerations, see Using Boolean enumerations. |
---|---|
doc | An XmlDoc object expression. |
newBoolean | The Boolean value to assign to doc's AllowNull property. |
Usage notes
- Nodes that are added to an XmlDoc that has
AllowNull=True
may not then be the source node in a subtree copy (AddSubtree or InsertSubtreeBefore) to a target XmlDoc that hasAllowNull=False
. - All Unicode characters except null can always be stored
in an XmlDoc, so setting AllowNull to True means all
Unicode characters can be stored.
If you were using the
now obsolete
InvalidChar=Allow
setting to allow null characters in an XmlDoc, you can useAllowNull=True
instead. - Deserialization of Unicode characters that do not translate to EBCDIC is not allowed unless the AllowUntranslatable deserialization option is used.
- When providing EBCDIC characters to be stored in an XmlDoc, those EBCDIC characters must be translatable to Unicode. If you have EBCDIC strings that may not be translatable, you must handle those before passing them to an XmlDoc update operation. For example, you may be able to use the Untranslatable argument of the EbcdicToUnicode function.
- A null character in an XmlDoc is serialized
as an XML hexadecimal character reference:
�
.
Examples
In the following request, an Ebcdic X'FF' character requires a replacement to avoid request cancellation, but setting AllowNull to True lets a null be added to the XmlDoc.
Begin %d is object Xmldoc auto new %n1 is object xmlnode %n2 is object xmlnode %n3 is object xmlnode %txt is string len 32 %uni is unicode %d:LoadXml('<zen>The Buddha dog says</zen>') %n1 = %d:SelectSingleNode('zen') %txt = 'substitute character is ' With $X2C('FF') %uni = %txt:EbcdicToUnicode(untranslatable='?') %n2 = %n1:AddComment(%uni) printText {~} = {%n2:value} %d:allownull = true %n3 = %n1:AddElement('a', 'nothingness: ' With $X2C('00')) %d:print end
The result is:
%n2:value = substitute character is ? <zen> The Buddha dog says <a>nothingness: �</a> </zen>