我有这个相当复杂的XML文件,其中包含URL信息。这些URL是从几个XML字段构建的,我无法提取这些字段来汇总这些字段。
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 :(得分:1)
xmlstarlet sel -t -m 'DynamicUrl/Query/DynamicUrlNameValuePair/Value/Text' -v . -o '/' file.xml
你确定这是你的问题吗?
也许您的问题是xsi:type="DynamicUrlLiteral"
我把它们剥掉了,
也许你在你提供的xml片段之外定义了命名空间
如果你不这样做,你需要定义你的xsi:type在文件中的内容,或者至少在命令行上使用-N foo=xsi:type