/// <summary> /// Sets an option in an XML parser. /// </summary> /// <param name="parser">A reference to the XML parser to set an option in. </param> /// <param name="option"> /// One of the following options: XML_OPTION_CASE_FOLDING, XML_OPTION_SKIP_TAGSTART, /// XML_OPTION_SKIP_WHITE, XML_OPTION_TARGET_ENCODING. /// </param> /// <param name="value">The option's new value. </param> /// <returns> /// This function returns FALSE if parser does not refer to a valid parser, or if the option could /// not be set. Else the option is set and TRUE is returned. /// </returns> public static bool xml_parser_set_option(PhpResource parser, XmlOption option, PhpValue value) { var xmlParser = XmlParserResource.ValidResource(parser); if (xmlParser != null) { switch (option) { case XmlOption.XML_OPTION_CASE_FOLDING: xmlParser.EnableCaseFolding = value.ToBoolean(); return(true); case XmlOption.XML_OPTION_SKIP_WHITE: xmlParser.EnableSkipWhitespace = value.ToBoolean(); return(true); case XmlOption.XML_OPTION_SKIP_TAGSTART: case XmlOption.XML_OPTION_TARGET_ENCODING: default: PhpException.Throw(PhpError.Warning, "invalid option value"); return(false); } } else { return(false); } }
/// <summary> /// Gets an option value from an XML parser. /// </summary> /// <param name="parser">A reference to the XML parser to get an option from. </param> /// <param name="option"> /// Which option to fetch. XML_OPTION_CASE_FOLDING and XML_OPTION_TARGET_ENCODING are available. /// </param> /// <returns> /// This function returns FALSE if parser does not refer to a valid parser or if option isn't valid /// (generates also a E_WARNING). Else the option's value is returned. /// </returns> public static PhpValue xml_parser_get_option(PhpResource parser, int option) { var xmlParser = XmlParserResource.ValidResource(parser); if (xmlParser != null) { switch ((XmlOption)option) { case XmlOption.XML_OPTION_CASE_FOLDING: return((PhpValue)xmlParser.EnableCaseFolding); case XmlOption.XML_OPTION_SKIP_WHITE: return((PhpValue)xmlParser.EnableSkipWhitespace); case XmlOption.XML_OPTION_SKIP_TAGSTART: case XmlOption.XML_OPTION_TARGET_ENCODING: default: PhpException.Throw(PhpError.Warning, "invalid option value"); return(PhpValue.False); } } else { return(PhpValue.False); } }
/// <summary> /// This function parses an XML string into 2 parallel array structures, one (index) containing /// pointers to the location of the appropriate values in the values array. These last two /// parameters must be passed by reference. /// </summary> /// <param name="parser">A reference to the XML parser. </param> /// <param name="data">A string containing the XML data. </param> /// <param name="values">An array containing the values of the XML data.</param> /// <param name="index"> /// An array containing pointers to the location of the appropriate values in the $values. /// </param> /// <returns> /// Returns 0 for failure and 1 for success. This is not the same as FALSE and TRUE, be careful /// with operators such as ===. /// </returns> public static int xml_parse_into_struct(PhpResource parser, string data, PhpAlias values, PhpAlias index = null) { if (values == null) { PhpException.Throw(PhpError.Warning, "values argument should not be null"); return(0); } var xmlParser = XmlParserResource.ValidResource(parser); if (xmlParser != null) { var values_arr = new PhpArray(); values.Value = (PhpValue)values_arr; PhpArray index_arr; if (index != null) { index.Value = (PhpValue)(index_arr = new PhpArray()); } else { index_arr = null; } return(xmlParser.ParseIntoStruct(data, values_arr, index_arr) ? 1 : 0); } PhpException.Throw(PhpError.Warning, "parser argument should contain valid XML parser"); return(0); }
public static int xml_get_current_line_number(PhpResource parser) { var xmlParser = XmlParserResource.ValidResource(parser); if (xmlParser != null) { return(xmlParser.CurrentLineNumber); } return(-1); }
public static int xml_get_current_byte_index(PhpResource parser) { var xmlParser = XmlParserResource.ValidResource(parser); if (xmlParser != null) { return(xmlParser.CurrentByteIndex); } return(-1); }
public static int xml_get_error_code(PhpResource parser) { var xmlParser = XmlParserResource.ValidResource(parser); if (xmlParser != null) { return(xmlParser.ErrorCode); } return(-1); }
/// <summary> /// This function allows to use parser inside object. All callback functions could be set with /// xml_set_element_handler() etc and assumed to be methods of object. /// </summary> /// <param name="parser">A reference to the XML parser to use inside the object. </param> /// <param name="objRef">The object where to use the XML parser.</param> /// <returns>Returns TRUE on success or FALSE on failure. </returns> public static bool xml_set_object(PhpResource parser, PhpValue objRef) { var xmlParser = XmlParserResource.ValidResource(parser); if (xmlParser != null) { xmlParser.HandlerObject = objRef.AsObject(); return(true); } return(false); }
/// <summary> /// Sets the external entity reference handler function for the XML parser parser. /// </summary> /// <param name="parser"> /// A reference to the XML parser to set up external entity reference handler function. /// </param> /// <param name="external_entity_ref_handler"> /// String (or array) containing the name of a function that must exist when xml_parse() is /// called for parser. /// </param> /// <returns>Returns TRUE on success or FALSE on failure. </returns> public static bool xml_set_external_entity_ref_handler(PhpResource parser, PhpValue external_entity_ref_handler) { var xmlParser = XmlParserResource.ValidResource(parser); if (xmlParser == null) { return(false); } PhpException.FunctionNotSupported("xml_set_external_entity_ref_handler"); return(false); }
/// <summary> /// Sets the unparsed entity declaration handler function for the XML parser parser. /// </summary> /// <param name="parser"> /// A reference to the XML parser to set up unparsed entity declaration handler function. /// </param> /// <param name="hdl"> /// String (or array) containing the name of a function that must exist when xml_parse() is /// called for parser. /// </param> /// <returns>Returns TRUE on success or FALSE on failure. </returns> public static bool xml_set_unparsed_entity_decl_handler(PhpResource parser, PhpValue hdl) { var xmlParser = XmlParserResource.ValidResource(parser); if (xmlParser == null) { return(false); } PhpException.FunctionNotSupported(nameof(xml_set_unparsed_entity_decl_handler)); return(false); }
/// <summary> /// Sets the default handler function for the XML parser parser. /// </summary> /// <param name="parser"> /// A reference to the XML parser to set up default handler function. /// </param> /// <param name="default_handler"> /// String (or array) containing the name of a function that must exist when xml_parse() is /// called for parser. /// </param> /// <returns>Returns TRUE on success or FALSE on failure.</returns> public static bool xml_set_default_handler(PhpResource parser, PhpValue default_handler) { IPhpCallable callback; var xmlParser = XmlParserResource.ValidResource(parser); if (xmlParser != null && (callback = xmlParser.ToCallback(default_handler)) != null) { xmlParser.DefaultHandler = callback; return(true); } return(false); }
/// <summary> /// Sets the processing instruction (PI) handler function for the XML parser parser. /// </summary> /// <param name="parser"> /// A reference to the XML parser to set up processing instruction (PI) handler function. /// </param> /// <param name="processing_instruction_handler"> /// String (or array) containing the name of a function that must exist when xml_parse() is /// called for parser. /// </param> /// <returns>Returns TRUE on success or FALSE on failure. </returns> public static bool xml_set_processing_instruction_handler(PhpResource parser, PhpValue processing_instruction_handler) { IPhpCallable callback; var xmlParser = XmlParserResource.ValidResource(parser); if (xmlParser != null && (callback = xmlParser.ToCallback(processing_instruction_handler)) != null) { xmlParser.ProcessingInstructionHandler = callback; return(true); } return(false); }
/// <summary> /// Set a handler to be called when a namespace is declared. Namespace declarations occur /// inside start tags. But the namespace declaration start handler is called before the start /// tag handler for each namespace declared in that start tag. /// </summary> /// <param name="parser"> /// A reference to the XML parser. /// </param> /// <param name="start_namespace_decl_handler"> /// String (or array) containing the name of a function that must exist when xml_parse() is /// called for parser. /// </param> /// <returns>Returns TRUE on success or FALSE on failure. </returns> public static bool xml_set_start_namespace_decl_handler(PhpResource parser, PhpValue start_namespace_decl_handler) { IPhpCallable callback; var xmlParser = XmlParserResource.ValidResource(parser); if (xmlParser != null && (callback = xmlParser.ToCallback(start_namespace_decl_handler)) != null) { xmlParser.StartNamespaceDeclHandler = callback; return(true); } return(false); }
/// <summary> /// Sets the character data handler function for the XML parser parser. /// </summary> /// <param name="parser"> /// A reference to the XML parser to set up character data handler function. /// </param> /// <param name="character_data_handler"> /// String (or array) containing the name of a function that must exist when xml_parse() is /// called for parser. /// </param> /// <returns>Returns TRUE on success or FALSE on failure. </returns> public static bool xml_set_character_data_handler(PhpResource parser, PhpValue character_data_handler) { IPhpCallable callback; var xmlParser = XmlParserResource.ValidResource(parser); if (xmlParser != null && (callback = xmlParser.ToCallback(character_data_handler)) != null) { xmlParser.CharacterDataHandler = callback; return(true); } return(false); }
/// <summary> /// Sets the element handler functions for the XML parser. start_element_handler and /// end_element_handler are strings containing the names of functions that must exist /// when xml_parse() is called for parser. /// </summary> /// <param name="parser"> /// A reference to the XML parser to set up start and end element handler functions. /// </param> /// <param name="start_element_handler"> /// String (or array) containing the name of a function that must exist when xml_parse() is /// called for parser. /// </param> /// <param name="end_element_handler"> /// String (or array) containing the name of a function that must exist when xml_parse() is /// called for parser. /// </param> /// <returns>Returns TRUE on success or FALSE on failure. </returns> public static bool xml_set_element_handler(PhpResource parser, PhpValue start_element_handler, PhpValue end_element_handler) { IPhpCallable callback_start, callback_end; var xmlParser = XmlParserResource.ValidResource(parser); if (xmlParser != null && (callback_start = xmlParser.ToCallback(start_element_handler)) != null && (callback_end = xmlParser.ToCallback(end_element_handler)) != null) { xmlParser.StartElementHandler = callback_start; xmlParser.EndElementHandler = callback_end; return(true); } return(false); }
/// <summary> /// Frees the given XML parser. /// </summary> /// <param name="parser">A reference to the XML parser to free.</param> /// <returns> /// This function returns FALSE if parser does not refer to a valid parser, or else it frees the /// parser and returns TRUE. /// </returns> public static bool xml_parser_free(PhpResource parser) { var xmlParser = XmlParserResource.ValidResource(parser); if (xmlParser == null) { return(false); } // Since .NET hasn't online XML parser, we need the whole XML data to parse them properly. // Notice user, he has to parse the XML by passing is_final=true to the last xml_parse function call. if (!xmlParser.InputQueueIsEmpty) { PhpException.Throw(PhpError.Notice, Resources.LibResources.not_parsed_data_left); } xmlParser.Dispose(); return(true); }
/// <summary> /// Parses an XML document. The handlers for the configured events are called as many times as /// necessary. /// </summary> /// <param name="parser">A reference to the XML parser to use.</param> /// <param name="data"> /// Chunk of data to parse. A document may be parsed piece-wise by calling xml_parse() several /// times with new data, as long as the is_final parameter is set and TRUE when the last data is /// parsed. /// </param> /// <param name="is_final">If set and TRUE, data is the last piece of data sent in this parse.</param> /// <returns> /// <para>Returns 1 on success or 0 on failure.</para> /// <para> /// For unsuccessful parses, error information can be retrieved with xml_get_error_code(), /// xml_error_string(), xml_get_current_line_number(), xml_get_current_column_number() and /// xml_get_current_byte_index(). /// </para> /// </returns> public static int xml_parse(PhpResource parser, string data, bool is_final = false) { var xmlParser = XmlParserResource.ValidResource(parser); return((xmlParser != null && xmlParser.Parse(data, is_final)) ? 1 : 0); }