Fsdb::F...ml_to_db(3)

πŸ“¦
version 3.9 Β· 3 versions
, in epel 9

okay bestie, welcome to Fsdb::F...ml_to_db(3) β€” that’s the User Contributed Perl Documentation page for a little XML-to-fsdb converter. It’s giving β€œniche but iconic,” and we’re gonna read it together. πŸ’–

✨ NAME ✨

xml_to_db β€” convert a subset of XML into fsdb

πŸ¦‹ SYNOPSIS πŸ¦‹

        xml_to_db -k EntityField <source.xml

🌸 DESCRIPTION 🌸

Okay so this thing converts a very limited subset of XML into Fsdb format. No cap: limited limited.

The input is XML-format (not fsdb). It gets parsed as XML, and each entity of type ENTITYFIELD is extracted as a row. ENTITYFIELD can have multiple components separated by slashes, which lets you walk down the XML tree if necessary. Slay.

The input XML file is assumed to be very simple. All rows are assumed to be sequential in one entity. Anything other than the specified ENTITYFIELD is ignored. The schema is assumed to be defined by the first instances of that field.

The output is two-space-separated fsdb. (Someday more general field separators should be supported β€” manifesting ✨.) Fsdb fields are a normalized version of the CSV file: spaces are converted to single underscores.

heads up, bestie: this is a very limited subset and the input is assumed to be super simple. It is not a general XML parser vibe check. πŸ’€

πŸŽ€ OPTIONS πŸŽ€

  • -e EmptyValue or --empty β€” specify the value newly created columns get.

This module also supports the standard fsdb options:

🌈 standard fsdb options, also supported

  • -d β€” enable debugging output.
  • -i or --input InputSource β€” read from InputSource β€” typically a file name, or "-" for standard input, or (if in Perl) a IO::Handle, Fsdb::IO or Fsdb::BoundedQueue objects.
  • -o or --output OutputDestination β€” write to OutputDestination β€” typically a file name, or "-" for standard output, or (if in Perl) a IO::Handle, Fsdb::IO or Fsdb::BoundedQueue objects.
  • --autorun or --noautorun β€” by default, programs process automatically, but Fsdb::Filter objects in Perl do not run until you invoke the run() method. The --(no)autorun option controls that behavior within Perl.
  • --help β€” show help.
  • --man β€” show full manual.

πŸ“ SAMPLE USAGE πŸ“

🎧 Input:

            <?xml version='1.0' standalone='yes'?>
            <gnuPod>
             <files>
              <file addtime="3389919728" album="Born to Pick" artist="7th Day Buskers" title="Loch Lamor" />
              <file addtime="3389919728" album="Born to Pick" artist="7th Day Buskers" title="The Floods" />
              <file addtime="3389919735" album="Copland Conducts Copland" artist="Aaron Copland" title="Our Town" />
             </files>
             <playlist name="new shows" plid="97241" >
               <regex artist="^(Le Show|This American Life)$" />
             </playlist>
            </gnuPod>

πŸ› οΈ Command:

            xml_to_db -k files/file <gnupod.xml

πŸ’… Output:

            #fsdb -F S addtime album artist title
            3389919728  Born to Pick  7th Day Buskers  Loch Lamor
            3389919728  Born to Pick  7th Day Buskers  The Floods
            3389919735  Copland Conducts Copland  Aaron Copland  Our Town
            #   | xml_to_db -k files/file

πŸ‘€ SEE ALSO πŸ‘€

Fsdb.

🧚 CLASS FUNCTIONS 🧚

🌱 new

$filter = new Fsdb::Filter::xml_to_db(@arguments);

Create a new xml_to_db object, taking command-line arguments.

🌷 set_defaults

$filter->set_defaults();

Internal: set up defaults.

πŸ¦‹ parse_options

$filter->parse_options(@ARGV);

Internal: parse command-line arguments.

πŸ”₯ _find_entities

$filter->_find_entities

Internal: walk the ENTITYFIELD specification through the XML::Simple data structure. Returns an aref.

🌸 setup

$filter->setup();

Internal: setup, parse headers.

⭐ run

$filter->run();

Internal: run over each row.

Copyright (C) 2011-2018 by John Heidemann <johnh@isi.edu>

This program is distributed under terms of the GNU general public license, version 2. See the file COPYING with the distribution for details.


xoxo bestie, this page is from perl v5.32.1, dated 2024-08-02 πŸ’…βœ¨

πŸ“¦ where this page comes from