【问题标题】:XMLStarlet Extracting Multiple LinesXMLStarlet 提取多行
【发布时间】:2016-06-25 06:40:05
【问题描述】:

我有一个包含 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>

【问题讨论】:

  • 嗨,Tom C,这里是 tomc ;) 你的粗体字不是。也许你应该用其他方式描述你需要什么
  • 包含在 字段中的所有内容。

标签: xml xmlstarlet


【解决方案1】:
xmlstarlet sel -t -m 'DynamicUrl/Query/DynamicUrlNameValuePair/Value/Text' -v . -o '/' file.xml

你确定这是你的问题吗?

也许你的问题是xsi:type="DynamicUrlLiteral"

我只是把它们剥掉了,
也许您在提供的 xml 片段之外定义了命名空间 如果你不这样做,你要么需要定义你的 xsi:type 在文件中是什么,要么至少在命令行上用-N foo=xsi:type 告诉 xmlstarlet

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多