Como fazer uma lista XPath para uma mensagem XML?

Como fazer uma lista XPath para uma mensagem XML?

Como fazer uma lista XPath para uma mensagem XML?

Obrigado por responder aos meus tópicos e analisar esse problema. Eu tenho uma mensagem XML bem formada. Quero produzir uma lista/relatório como

1) Todos os XPath da mensagem XML

2) Xpath , conteúdo de dados para este XPATH

Aqui está um exemplo

<?xml version="1.0"?>
<PARTS>
   <TITLE>Computer Parts</TITLE>
   <PART>
      <ITEM>Motherboard</ITEM>
      <MANUFACTURER>ASUS</MANUFACTURER>
      <MODEL>P3B-F</MODEL>
      <COST> 123.00</COST>
   </PART>
   <PART>
      <ITEM>Video Card</ITEM>
      <MANUFACTURER>ATI</MANUFACTURER>
      <MODEL>All-in-Wonder Pro</MODEL>
      <COST> 160.00</COST>
   </PART>
   <PART>
      <ITEM>Sound Card</ITEM>
      <MANUFACTURER>Creative Labs</MANUFACTURER>
      <MODEL>Sound Blaster Live</MODEL>
      <COST> 80.00</COST>
   </PART>
   <PART>
      <ITEM>inch Monitor</ITEM>
      <MANUFACTURER>LG Electronics</MANUFACTURER>
      <MODEL> 995E</MODEL>
      <COST> 290.00</COST>
   </PART>
</PARTS>

Criei a lista XML manualmente

    /PARTS/TITLE                         Computer Parts
    /PARTS/PART[1]/ITEM                  Motherboard
    /PARTS/PART[1]/MANUFACTURER          ASUS
    /PARTS/PART[1]/MODEL                 P3B-F
    /PARTS/PART[1]/COST                  123.00
    /PARTS/PART[2]/ITEM                  Video Card
    /PARTS/PART[2]/MANUFACTURER          ATI
............
..............
..................
...................

Eu tenho o XMLSPY e não tenho um kit de ferramentas adicional associado ao XMLSPY.

Eu tentei com xml_grep no Linux. Ele precisa do XPATH como entrada para obter o conteúdo dos dados. Não consigo usar xml_grep para extrair atributos da mensagem XML.

Quais são as maneiras de extrair XPATHs/XPATH, conteúdo de dados?

Obrigado por ajudar.

Responder1

Aqui está minha resposta para minha pergunta semelhante: p

echo -e "setrootns\ncd defaultns:beans\ndir *" | xmllint --shell applicationContext.xml | grep -v -E ' TEXT| content=' | gawk 'BEGIN{ RS="ELEMENT "; FS=" *\n"} { print "/beans/" $1 "/@" $2 }' | sed -re 's/ +ATTRIBUTE // | uniq'
/beans// > setrootns/@/ > cd defaultns:beans
/beans/jaxrs:server/@id
/beans/bean/@id
/beans/import/@resource

O comando echo "canaliza" os seguintes comandos shell xmllint

# tell xmllint this xml has namespace declarations (not your case)
setrootns
# move to the first root node (PARTS in your case)
cd defaultns:beans
# list node contents
dir *

Resultado:

/ > setrootns
/ > cd defaultns:beans
beans > dir *
ELEMENT jaxrs:server
  ATTRIBUTE id
    TEXT
      content=CreateSurveyService
  ATTRIBUTE address
    TEXT
      content=/services
ELEMENT bean
  ATTRIBUTE id
    TEXT
      content=routingDataSource
  ATTRIBUTE class
    TEXT
      content=com.lsr.usc.datasource.routing.RegionCod...

O restante dos comandos é usado para analisar esta saída.

informação relacionada