2016-06-21 5 views
1

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

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> 
+0

Привет, Том Томп, Том, здесь ваше смелое - нет. возможно, вам следует описать, что вам нужно каким-то другим способом. – tomc

+0

Все, что обернуто в поля . –

ответ

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

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

Может быть, ваша проблема заключается в xsi:type="DynamicUrlLiteral"

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

Смежные вопросы