示例#1
0
 /// <summary>
 /// This write method is used to append the provided object as an
 /// element to the given XML element object. This will recursively
 /// write the contacts from the provided object as elements. This is
 /// done using the <c>Converter</c> acquired from the contact
 /// label. If the type of the contact value is not of the same
 /// type as the XML schema class a "class" attribute is appended.
 /// <p>
 /// If the element being written is inline, then this will not
 /// check to see if there is a "class" attribute specifying the
 /// name of the class. This is because inline elements do not have
 /// an outer class and thus could never have an override.
 /// </summary>
 /// <param name="value">
 /// this is the value to be set as an element
 /// </param>
 /// <param name="node">
 /// this is the XML element to write the element to
 /// </param>
 /// <param name="label">
 /// the label that contains the contact details
 /// </param>
 public void WriteElement(OutputNode node, Object value, Label label) {
    if(value != null) {
       String name = label.GetName(context);
       OutputNode next = node.getChild(name);
       Type contact = label.getContact();
       Class type = contact.Type;
       if(!label.isInline()) {
          WriteNamespaces(next, type, label);
       }
       if(label.isInline() || !IsOverridden(next, value, contact)) {
          Converter convert = label.getConverter(context);
          bool data = label.isData();
          next.setData(data);
          WriteElement(next, value, convert);
       }
    }
 }