我有一个包含URL信息的相当复杂的XML文件。这些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>发布于 2016-06-25 05:05:17
xmlstarlet sel -t -m 'DynamicUrl/Query/DynamicUrlNameValuePair/Value/Text' -v . -o '/' file.xml你确定这是你的问题吗?
也许你的问题是xsi:type="DynamicUrlLiteral"
我只是把它们去掉了,
也许您已经在所提供的xml片段之外定义了名称空间,如果没有,则需要在文件中定义xsi:type是什么,或者至少在命令行上用-N foo=xsi:type告诉xmlstarlet
https://stackoverflow.com/questions/37951363
复制相似问题