使用未定义的编码读取和修改XML文件

时间:2015-06-24 19:52:46

标签: xml perl xpath encoding

修改XML文件中属性的最佳方法是什么,特别是我想要更改URL。

我遇到的最大问题是文件没有定义的编码。通过反复试验,我相信我已经确定其编码为UTF-16LE类型。如果有兴趣,这里是文件的开始十六进制转储:

  

3C 00 74 00 72 00 75 00 53 00 63 00 72 00 69 00

我无法将文件转换为其他编码,因为如果我这样做,那么当我重新创建.zip存档时,文件在程序中读取存档将无法正确读取此文件(程序是TruClient HP脚本创建者)。如果它可以转换它,进行更改,然后不开心我也很想知道如何做到这一点。

作为参考,这里是xml文档(直到相关节点):

<truScript platform="IE9" engineVersion="12.0.16.0" timestamp="Mon Jun 22 11:20:14 EDT 2015">
<step type="block" stepId="step:{00000000-0000-0000-0000-000000000001}" action="TopStep" level="1">
    <step type="block" stepId="step:{00000000-0000-0000-0000-000000000002}" action="action" level="43" section="Script">
        <step type="block" stepId="step:{00000000-0000-0000-0000-000000000003}" action="action" level="43" section="Init" />
        <step type="block" stepId="step:{00000000-0000-0000-0000-000000000004}" action="action" level="43" section="Action">
            <step type="testObject" stepId="step:{23b5fd01-da3e-628c-0dd7-69e535024d15}" action="Navigate" level="1" arguments="{&quot;Location&quot;:&quot;\&quot;www.nbc.com\&quot;&quot;}" testObject=   "testObj:{00000000-0000-0000-0000-000000000001}" index="1" />
        </step>

我希望用一个动作修改节点上的arguments属性=&#34;导航&#34;属性。

我尝试过创建一个perl脚本,但是我在写入文档时遇到了问题(我可以找到元素很好)以及确保它不会改变编码。

如果可能的话,我喜欢使用xmllint和xpath功能,但我还没有找到一种方法来强制它在运行xmllint命令之前将文件视为特定编码而不更改编码(我希望这是有道理的。)

如果需要任何其他信息,请告诉我。

0 个答案:

没有答案