XMLStarlet извлечение нескольких строк

У меня есть довольно сложный XML-файл, в котором хранится информация об URL. URL-адреса построены из нескольких полей XML, и у меня возникли проблемы с извлечением этих полей, чтобы собрать из них URL-адреса.

XML выглядит так: мне нужно извлечь все поля (я выделил их жирным шрифтом для облегчения чтения), я совершенно не могу извлечь все эти поля. У меня установлен XMLStarlet, и я использовал его несколько раз в прошлом, но это уже не моя голова. Будем очень признательны за любые предложения или помощь.

 <DynamicUrl>
  <Name>DynamicUrl</Name>
  <CacheData>true</CacheData>
  <Path>http://contentstore.fourwindsinteractive.com/PlayerHandler.ashx</Path>
  <Query>
    <DynamicUrlNameValuePair>
      <Name>Type</Name>
      <Value xsi:type="DynamicUrlLiteral">
        <Text>download</Text>
      </Value>
    </DynamicUrlNameValuePair>
    <DynamicUrlNameValuePair>
      <Name>Title</Name>
      <Value xsi:type="DynamicUrlLiteral">
        <Text>CS00090256</Text>
      </Value>
    </DynamicUrlNameValuePair>
    <DynamicUrlNameValuePair>
      <Name>UserType</Name>
      <Value xsi:type="DynamicUrlLiteral">
        <Text>1</Text>
      </Value>
    </DynamicUrlNameValuePair>
    <DynamicUrlNameValuePair>
      <Name>LinkSource</Name>
      <Value xsi:type="DynamicUrlLiteral">
        <Text>X3/1QlyNrhGynsh+0oRn7Q==</Text>
      </Value>
    </DynamicUrlNameValuePair>
    <DynamicUrlNameValuePair>
      <Name>LinkKey</Name>
      <Value xsi:type="DynamicUrlLiteral">
        <Text>1c44ad692f10fc96922282d9bf6eb57c</Text>
      </Value>
    </DynamicUrlNameValuePair>
    <DynamicUrlNameValuePair>
      <Name>Extension</Name>
      <Value xsi:type="DynamicUrlLiteral">
        <Text>mp4</Text>
      </Value>
    </DynamicUrlNameValuePair>
    <DynamicUrlNameValuePair>
      <Name>FWIIncludeMimetype</Name>
      <Value xsi:type="DynamicUrlLiteral">
        <Text>false</Text>
      </Value>
    </DynamicUrlNameValuePair>
  </Query>
  <UseUploadData>false</UseUploadData>
  <Method>Get</Method>
  <Username />
  <Password />
  <Domain />
  <ConnectionString />
  <CommandText />
  <DeploymentBehavior>DownloadSource</DeploymentBehavior>
</DynamicUrl>

person Tom C    schedule 21.06.2016    source источник
comment
Привет, Том Си, здесь нет;) твоя смелость - нет. может тебе стоит описать то, что тебе нужно, как-нибудь иначе   -  person tomc    schedule 22.06.2016
comment
Все, что заключено в поля ‹text› ‹/text›.   -  person Tom C    schedule 23.06.2016


Ответы (1)


xmlstarlet sel -t -m 'DynamicUrl/Query/DynamicUrlNameValuePair/Value/Text' -v . -o '/' file.xml

Вы уверены, что это ваш вопрос?

Может ваша проблема в xsi:type="DynamicUrlLiteral"

Я просто вырезал их,
возможно, у вас есть пространство имен, определенное за пределами предоставленного вами xml-фрагмента, если вы этого не сделали, вам нужно либо определить, что ваш xsi: type находится в файле, либо, по крайней мере, указать xmlstarlet в командной строке с -N foo=xsi:type

person tomc    schedule 24.06.2016