2016-06-21 90 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在這裏;)你的大膽不是。也許你應該描述你需要什麼其他方式 – 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