2016-02-01 6 views
2

У меня довольно простая проблема для решения, но были у него в течение нескольких дней без везения.XMLStarlet: Как выбрать XML, возвращая пустое

У меня есть XML-документ, как это:

<?xml version="1.0"?> 
<readiness> 
    <model> 
     <name>Power</name> 
     <state> 
      <pdlReq>PASS</pdlReq> 
      <fileReq>PASS</fileReq> 
     </state> 
    </model> 
</readiness> 

И я пытаюсь выбрать .. ничего на самом деле. Я не могу получить даже самые простые примеры для работы. То, что я пробовал:

  • xmlstarlet sel -T -t -m "//readiness" modelReadinessState.xml
  • xmlstarlet sel -T -t -m "/readiness" modelReadinessState.xml
  • xmlstarlet sel -T -t -m "readiness" modelReadinessState.xml
  • xmlstarlet sel -T -t -m "/readiness/model[name='Power']" -v pdl modelReadinessState.xml
  • xmlstarlet sel -T -t -m "/readiness/model[name='Power']" -v pdl -n modelReadinessState.xml
  • xmlstarlet sel -T -t -m "/readiness/model[name='Power']" modelReadinessState.xml
  • xmlstarlet sel -t -m "//readiness" modelReadinessState.xml
  • xmlstarlet sel -t -m "/readiness" modelReadinessState.xml
  • xmlstarlet sel -t -m "readiness" modelReadinessState.xml

Я понятия не имею, почему это не работает :(Я просто получить заготовки вернулся обратно.

Примечание: В этом XML-файле нет пространств имен.

Любые идеи?

+3

Pluse-уно для взбивания кусты, чтобы решить вашу проблему. Удачи! – shellter

ответ

1

Попробуйте эти:

xmlstarlet sel -t -c "//readiness"   modelReadinessState.xml 

xmlstarlet sel -t -c "readiness/model/name" modelReadinessState.xml 

xmlstarlet sel -t -v "readiness/model/name" modelReadinessState.xml 
+0

Удивительный! Он работает, спасибо вам большое! – Kayvar