Verktyg för att hantera xml

Tråden skapades och har fått 5 svar. Det senaste inlägget skrevs .
1
  • Medlem
  • Stockholm
  • 2009-07-11 09:33

Tänkte kolla om det finns några verktyg för att hantera xml i terminalen. Vad jag vill göra är att ge argument som typ artist, album, namn, etc och få resultatet som ren text från en xml fil.

  • Medlem
  • Stockholm
  • 2009-07-11 13:21
(entity@ran ~): uname -a
Darwin ran.dnz.se 8.11.1 Darwin Kernel Version 8.11.1: Wed Oct 10 18:23:28 PDT 2007; root:xnu-792.25.20~1/RELEASE_I386 i386 i386
(entity@ran ~): man -k xml
Pod::Perldoc::ToXml(3pm) - let Perldoc render Pod as XML
dom(n)                   - Create an in-memory DOM tree from XML
hdxml2manxml(1)          - HeaderDoc XML to MPGL translator
libxml(3)                - library used to parse XML files
libxslt(3)               - library used to do XSL transformations on XML documents
tclxml(n), ::xml::parser(n) - XML parser support for Tcl
tnc(n)                   - tnc is an expat parser object extension, that validates the XML stream against the document DTD while parsing
xml2-config(1), xml-config(1) - script to get information about the installed version of GNOME-XML
xml2man(1)               - MPGL to mdoc (man page) translator
xmlcatalog(1)            - Command line tool to parse and manipulate XML or SGML catalog files
xmllint(1)               - command line XML tool
(entity@ran ~):

En lätt lösning vore ju exempelvis att skriva ett kort TCL script som loopar genom din XML fil, men om det är en spec XML fil så behöver du ju inte använda något som "förstår" XML, en onliner med grep & sed löser det snabbt..

  • Medlem
  • Stockholm
  • 2009-07-11 20:48

Var mest nyfiken om det fanns något i standard installationen av mac os som kunde göra vad jag tänkt mig. Det verkar ju inte så, jag har kollat in xmllint lite men har bara lyckats göra något liknande i xmllints egen shell. Jag kan ju använda grep och sed men det blir lite knepigt att hantera underkataloger så jag får med information jag inte är intresserad av. Dessutom har jag inte lyckats få ut texten utan taggar.

Detta är vad jag har testat:

grep '<key>Artist<\/key>' data.xml | sed -n '/<string>/,/<\/string>/p'

  • Medlem
  • Göteborg
  • 2009-07-11 21:50

Finns grymma xml parsningsbibliotek i python, orkar man lära sig några rader kan man åstakomma underverk där

  • Medlem
  • Stockholm
  • 2009-07-12 01:12
Ursprungligen av kkr:

Finns grymma xml parsningsbibliotek i python, orkar man lära sig några rader kan man åstakomma underverk där

Känns som om jag får ta och titta lite närmare på det där.:D

  • Medlem
  • Stockholm
  • 2009-07-14 08:14

Har hittat en lösning som får xmllint att ge resultatet till stdout om det är någon som är intresserad.

echo "cat plist/dict/dict/dict/string[1]" | xmllint --noent --shell data.xml | grep '<' | sed 's/<[^>]*>//g' 

Sedan kan man ju göra en "wrapper" och byta ut xpath och fil mot variabler.

Källa

1
Bevaka tråden