Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何修复添加到节点上的空白换行符,在更改XML节点上的数据时我不会触及这些换行符?_Xml_Powershell - Fatal编程技术网

如何修复添加到节点上的空白换行符,在更改XML节点上的数据时我不会触及这些换行符?

如何修复添加到节点上的空白换行符,在更改XML节点上的数据时我不会触及这些换行符?,xml,powershell,Xml,Powershell,我的脚本目标是为Pidgin更改accounts.xml文件中的服务器。 当我运行代码时,所有内容都在顶部,但XML中的一个节点现在添加了新行,导致帐户崩溃,因为它编辑了一个不应编辑的节点 我试着创建-找到模式,用新线替换线,没有运气 XML的结构: <?xml version='1.0' encoding='UTF-8' ?> <account version='1.0'> <account> <protocol>prp

我的脚本目标是为Pidgin更改accounts.xml文件中的服务器。 当我运行代码时,所有内容都在顶部,但XML中的一个节点现在添加了新行,导致帐户崩溃,因为它编辑了一个不应编辑的节点

我试着创建-找到模式,用新线替换线,没有运气

XML的结构:

<?xml version='1.0' encoding='UTF-8' ?>

<account version='1.0'>
    <account>
        <protocol>prpl-jabber</protocol>
        <name>name1@old-domain/</name>
        <password>123qweASD</password>
        <statuses>
            <status type='available' name='Available' active='true'>
                <attributes/>
            </status>
            <status type='mood' name='Feeling' active='false'>
                <attributes/>
            </status>
            <status type='freeforchat' name='Chatty' active='false'>
                <attributes/>
            </status>
            <status type='away' name='Away' active='false'>
                <attributes/>
            </status>
            <status type='extended_away' name='Extended away' active='false'>
                <attributes/>
            </status>
            <status type='dnd' name='Do Not Disturb' active='false'>
                <attributes/>
            </status>
            <status type='offline' name='Offline' active='false'>
                <attributes/>
            </status>
        </statuses>
        <userinfo></userinfo>
        <settings>
            <setting name='bosh_url' type='string'></setting>
            <setting name='buddy_icon_timestamp' type='int'>0</setting>
            <setting name='auth_plain_in_clear' type='bool'>0</setting>
            <setting name='custom_smileys' type='bool'>1</setting>
            <setting name='port' type='int'>5222</setting>
            <setting name='connect_server' type='string'></setting>
            <setting name='check-mail' type='bool'>0</setting>
            <setting name='buddy_icon'/>
            <setting name='ft_proxies' type='string'></setting>
            <setting name='connection_security' type='string'>opportunistic_tls</setting>
            <setting name='use-global-buddyicon' type='bool'>1</setting>
        </settings>
        <settings ui='gtk-gaim'>
            <setting name='auto-login' type='bool'>0</setting>
        </settings>
        <current_error/>
    </account>
    <account>
        <protocol>prpl-jabber</protocol>
        <name>name2@old-domain/</name>
        <password>123qweASD</password>
        <statuses>
            <status type='available' name='Available' active='true'>
                <attributes/>
            </status>
            <status type='mood' name='Feeling' active='false'>
                <attributes/>
            </status>
            <status type='freeforchat' name='Chatty' active='false'>
                <attributes/>
            </status>
            <status type='away' name='Away' active='false'>
                <attributes/>
            </status>
            <status type='extended_away' name='Extended away' active='false'>
                <attributes/>
            </status>
            <status type='dnd' name='Do Not Disturb' active='false'>
                <attributes/>
            </status>
            <status type='offline' name='Offline' active='false'>
                <attributes/>
            </status>
        </statuses>
        <userinfo></userinfo>
        <settings>
            <setting name='bosh_url' type='string'></setting>
            <setting name='buddy_icon_timestamp' type='int'>0</setting>
            <setting name='auth_plain_in_clear' type='bool'>0</setting>
            <setting name='custom_smileys' type='bool'>1</setting>
            <setting name='port' type='int'>5222</setting>
            <setting name='connect_server' type='string'></setting>
            <setting name='check-mail' type='bool'>0</setting>
            <setting name='buddy_icon'/>
            <setting name='ft_proxies' type='string'></setting>
            <setting name='connection_security' type='string'>opportunistic_tls</setting>
            <setting name='use-global-buddyicon' type='bool'>1</setting>
        </settings>
        <settings ui='gtk-gaim'>
            <setting name='auto-login' type='bool'>0</setting>
        </settings>
        <current_error/>
    </account>
</account>

运行时,所有条目的account\account\name中的数据都会更改。 但现在,对于设置中的每个条目,对于bosch url,Powershell会创建七个空格和新行,从而产生一行,如下所示:

<setting name='bosh_url' type='string'></setting>
结果如下:

<setting name='bosh_url' type='string'>
      </setting>
但在代码中,我甚至不涉及设置节点

谢谢

试试:

$xml = New-Object System.Xml.XmlDocument
$xml.PreserveWhitespace = $true
$xml.Load($file)
   ...do something
$xml.Save($file)

不,它仍然做同样的事情,它触及了博世大学的URL,并在那里添加了七个空格和新行。也许这对你有帮助:嗯,现在它工作了,将在更多的环境中尝试。在我的电脑里一切都很好。