首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在PowerShell中汇编字符串文件的最佳方法

在PowerShell中汇编字符串文件的最佳方法
EN

Stack Overflow用户
提问于 2013-06-12 03:44:30
回答 2查看 98关注 0票数 1

我有一个散列/数组结构,我想用它来组合几个文本文件。这是实现这一目标的最好方法吗?

代码语言:javascript
复制
$resolutions = @(
    @{"bitrate" = 1100; "width" = 1920; "height" = 1080};
    @{"bitrate" = 800; "width" = 800; "height" = 448};
    @{"bitrate" = 400; "width" = 800; "height" = 448};
    @{"bitrate" = 128; "width" = 800; "height" = 448};
    @{"bitrate" = 64; "width" = 800; "height" = 448}
)

$metadata =
@"
<xml>
    <targets>`r`n
"@

foreach ($resolution in $resolutions)
{
    $metadata += "        <target>`r`n"
    $metadata += "            <bitrate>$($resolution["bitrate"])</bitrate>`r`n"
    $metadata += "            <width>$($resolution["width"])</width>`r`n"
    $metadata += "            <height>$($resolution["height"])</height>`r`n"
    $metadata += "        </target>`r`n"
}

$metadata +=
@"
    </targets>
</xml>
"@

$metadata | out-file Metadata.xml -encoding ASCII

Metadata.xml的内容应该如下所示:

代码语言:javascript
复制
<xml>
    <targets>
        <target>
            <bitrate>1100</bitrate>
            <width>1920</width>
            <height>1080</height>
        </target>
        <target>
            <bitrate>800</bitrate>
            <width>800</width>
            <height>448</height>
        </target>
        <target>
            <bitrate>400</bitrate>
            <width>800</width>
            <height>448</height>
        </target>
        <target>
            <bitrate>128</bitrate>
            <width>800</width>
            <height>448</height>
        </target>
        <target>
            <bitrate>64</bitrate>
            <width>800</width>
            <height>448</height>
        </target>
    </targets>
</xml>
EN

回答 2

Stack Overflow用户

发布于 2013-06-12 04:16:24

我会使用一个单独的here-string:

代码语言:javascript
复制
$metadata = @"
<xml>
    <targets>
$(
    foreach ($resolution in $resolutions)
    {
        "<target>"
            "<bitrate>$($resolution.bitrate)</bitrate>"
            "<width>$($resolution.width)</width>"
            "<height>$($resolution.height)</height>"
        "</target>"
    }
)
    </targets>
</xml>
"@

$metadata | out-file Metadata.xml -encoding ASCII
票数 4
EN

Stack Overflow用户

发布于 2013-06-12 04:16:38

去罗马的路有很多种。就我个人而言,我喜欢使用现有的工具。您已经获得了可用的.Net框架,因此您可以通过多种方式来完成此任务。例如。您可以使用XmlDocument尝试这种方法。

代码语言:javascript
复制
$resolutions = @(
    @{"bitrate" = 1100; "width" = 1920; "height" = 1080};
    @{"bitrate" = 800; "width" = 800; "height" = 448};
    @{"bitrate" = 400; "width" = 800; "height" = 448};
    @{"bitrate" = 128; "width" = 800; "height" = 448};
    @{"bitrate" = 64; "width" = 800; "height" = 448}
)

#Create XMLdoc
$doc = New-Object xml
#Create XML root node "xml"
$xml = $doc.AppendChild($doc.CreateElement("xml"))
#Create collectionnode for targets
$targets = $xml.AppendChild($doc.CreateElement("targets"))

#Create target-node for each resolution
foreach ($res in $resolutions) {
    $target = $doc.CreateElement("target")
    $target.AppendChild($doc.CreateElement("bitrate")).InnerText = $res["bitrate"]
    $target.AppendChild($doc.CreateElement("width")).InnerText = $res["width"]
    $target.AppendChild($doc.CreateElement("height")).InnerText = $res["height"]
    $targets.AppendChild($target) | out-null
}

$doc.Save("C:\Users\graimer\Desktop\test.xml")

test.xml

代码语言:javascript
复制
<xml>
  <targets>
    <target>
      <bitrate>1100</bitrate>
      <width>1920</width>
      <height>1080</height>
    </target>
    <target>
      <bitrate>800</bitrate>
      <width>800</width>
      <height>448</height>
    </target>
    <target>
      <bitrate>400</bitrate>
      <width>800</width>
      <height>448</height>
    </target>
    <target>
      <bitrate>128</bitrate>
      <width>800</width>
      <height>448</height>
    </target>
    <target>
      <bitrate>64</bitrate>
      <width>800</width>
      <height>448</height>
    </target>
  </targets>
</xml>

有关使用.Net的替代方法,请查看this SO question

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17052418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档