Nushell
Get Nu!
Getting Started
  • The Nushell Book
  • Command Reference
  • Cookbook
  • Language Reference Guide
  • Contributing Guide
Blog
  • English
  • 中文
  • Deutsch
  • Français
  • Español
  • 日本語
  • Português do Brasil
  • Русский язык
  • 한국어
GitHub
Get Nu!
Getting Started
  • The Nushell Book
  • Command Reference
  • Cookbook
  • Language Reference Guide
  • Contributing Guide
Blog
  • English
  • 中文
  • Deutsch
  • Français
  • Español
  • 日本語
  • Português do Brasil
  • Русский язык
  • 한국어
GitHub
  • Categories

    • Bits
    • Bytes
    • Chart
    • Conversions
    • Core
    • Database
    • Dataframe
    • Dataframe Or Lazyframe
    • Date
    • Debug
    • Default
    • Env
    • Experimental
    • Expression
    • Filesystem
    • Filters
    • Formats
    • Generators
    • Hash
    • History
    • Lazyframe
    • Math
    • Misc
    • Network
    • Path
    • Platform
    • Plugin
    • Prompt
    • Random
    • Removed
    • Shells
    • Strings
    • System
    • Viewers

from xml for formats

Parse text as .xml and create record.

Signature

> from xml {flags}

Flags

  • --keep-comments: add comment nodes to result
  • --allow-dtd: allow parsing documents with DTDs (may result in exponential entity expansion)
  • --keep-pi: add processing instruction nodes to result

Input/output types:

inputoutput
stringrecord

Examples

Converts xml formatted string to record

> '<?xml version="1.0" encoding="UTF-8"?>
<note>
  <remember>Event</remember>
</note>' | from xml
╭──────────────────────┬─────────────────────────────────────────────────────────────────────────────────────╮
│ tag                  │ note                                                                                │
│ attributes           │ {record 0 fields}                                                                   │
│                      │ ╭───┬──────────┬───────────────────┬────────────────────────────────────╮           │
│ content              │ │ # │   tag    │    attributes     │              content               │           │
│                      │ ├───┼──────────┼───────────────────┼────────────────────────────────────┤           │
│                      │ │ 0 │ remember │ {record 0 fields} │ ╭───┬─────┬────────────┬─────────╮ │           │
│                      │ │   │          │                   │ │ # │ tag │ attributes │ content │ │           │
│                      │ │   │          │                   │ ├───┼─────┼────────────┼─────────┤ │           │
│                      │ │   │          │                   │ │ 0 │     │            │ Event   │ │           │
│                      │ │   │          │                   │ ╰───┴─────┴────────────┴─────────╯ │           │
│                      │ ╰───┴──────────┴───────────────────┴────────────────────────────────────╯           │
╰──────────────────────┴─────────────────────────────────────────────────────────────────────────────────────╯

Notes

Every XML entry is represented via a record with tag, attribute and content fields. To represent different types of entries different values are written to this fields:

  1. Tag entry: {tag: <tag name> attrs: {<attr name>: "<string value>" ...} content: [<entries>]}
  2. Comment entry: {tag: '!' attrs: null content: "<comment string>"}
  3. Processing instruction (PI): {tag: '?<pi name>' attrs: null content: "<pi content string>"}
  4. Text: {tag: null attrs: null content: "<text>"}.

Unlike to xml command all null values are always present and text is never represented via plain string. This way content of every tag is always a table and is easier to parse