Хотите ли вы создать XML прямо из формы, не отправляя ее, или из внутреннего сценария, обрабатывающего данные формы при отправке?
Для первого варианта (генерировать XML нана стороне клиента без отправки формы), вы должны использовать JavaScript.
Поскольку Perl является одним из ваших тегов, я предполагаю, что это НЕ то, что вы хотите сделать и выиграли 't развернуть дальше.
Для второго варианта (внутренний скрипт, обрабатывающий данные формы после отправки), вы можете использовать следующую структуру кода.
use XML::Simple;
my %form_fields = process_form_data();
# This depends on what framework you use, e.g. CGI.pm, TT, Embperl, etc...
# Most Perl web frameworks already create a hash for you
# with keys being input element names
my %xml_hash = ();
foreach my $name (keys %form_fields) {
next unless $process_form_field{$name}; # If only some are put into XML
$xml_hash{$name} = $form_fields{name}; # Assuming no multiple values.
}
# Loop over $xml_hash keys and find if any required ones are missing...
my $xml_string = XMLOut({root_element_name => \%form_fields});
Это приблизительное значение (точный ответ невозможен, поскольку вы не уточнили какие-либо детали, такие как веб-среда Perl, требуемый модуль XML, данные образца формы или структура XML);Я предположил, что предопределенный набор элементов формы, имена которых находятся в хеше %process_form_field
, преобразуется в элементы XML с одинаковыми именами, которые все хранятся однозначно в родительском элементе <root_element_name>
, и что ваша веб-платформа Perl имеет метод process_form_data()
,преобразует данные формы (данные QUERY_STRING или POST) в имена входных элементов формы хэш-отображения в представленные значения (например, Embperl имеет встроенный хэш %fdat
, который автоматически достигает этого).Кроме того, я предполагаю, что ни один из элементов не содержит значения> 1 для простоты.