Что нового

XML изменить value

semiono

Новичок
Сообщения
18
Репутация
0
Код:
<?xml version="1.0" encoding="utf-8"?>
<UserPreferences>
   <list name="Entries" type="list">
      <item>

Код:
      <item>
         <string name="Group" value="SurfaceSchemeColorSetPreferences10"/>
         <member name="Values">
            <int name="surface.controls.warning-text" value="-4229329"/>
            <int name="surface.info-lines.multiple-text" value="-4229329"/>
            <int name="surface.informer.background" value="-13210"/>
            <int name="surface.rulers.cycle-active" value="-9282587"/>
            <int name="surface.rulers.cycle-external" value="-10772251"/>
            <int name="surface.rulers.cycle-local" value="-10040167"/>
            <int name="surface.rulers.cycle-reverse" value="-4229329"/>
            <int name="surface.status-lines.worry-text" value="-87808"/>
            <int name="surface.system.root" value="-14342101"/>
         </member>
      </item>

Код:
      </member>
   </member>
</UserPreferences>

Как можно <int name="surface.system.root" value="-14342101"/> изменить?
Можно было бы даже заменой строки целиком, только не знаю как * маску задать:
sed -i "s/<int name="surface.system.root" value="*"/>/<int name="surface.system.root" value="123"/>/g"
Но лучше, конечно, через XML
string name/member name/int name

Нашёл даже пример
Код:
$oXML = ObjCreate("Msxml2.DOMDocument.3.0")
$oXML.Load("test.xml")

$oAll = $oXML.SelectNodes("//right/value")
For $oEl In $oAll
   $oEl.Text = 1111
Next

MsgBox(0, "", $oXML.xml)
$oXML.Save("test2.xml")


Но под данный файл не смог переделать. Я новичёк.
Сообщение автоматически объединено:

Надо было в стол заказов? Не соорентировался!
 
Последнее редактирование:

SealAlbinos

Знающий
Сообщения
64
Репутация
15
Код:
<?xml version="1.0" encoding="utf-8"?>
<UserPreferences>
   <list name="Entries" type="list">
       <item>
             <string name="Group" value="SurfaceSchemeColorSetPreferences10"/>
                 <member name="Values">
                    <int name="surface.controls.warning-text" value="-4229329"/>
                    <int name="surface.info-lines.multiple-text" value="-4229329"/>
                    <int name="surface.informer.background" value="-13210"/>
                    <int name="surface.rulers.cycle-active" value="-9282587"/>
                    <int name="surface.rulers.cycle-external" value="-10772251"/>
                    <int name="surface.rulers.cycle-local" value="-10040167"/>
                    <int name="surface.rulers.cycle-reverse" value="-4229329"/>
                    <int name="surface.status-lines.worry-text" value="-87808"/>
                    <int name="surface.system.root" value="-14342101"/>
                 </member>
        </item>
    </list>
</UserPreferences>

Код:
$oXML = ObjCreate("Msxml2.DOMDocument.3.0")
$oXML.Load("test.xml")
$oAll = $oXML.SelectNodes("//member/int[@name='surface.system.root']")

For $oEl In $oAll
    $oEl.SetAttribute("value","111")
Next

$oXML.Save("test2.xml")
 
Последнее редактирование:
Автор
S

semiono

Новичок
Сообщения
18
Репутация
0
Das ist fantastisch! huge xml works valid! :smile:

I'm afraid. There may be problems?
Can you be more specific and bind to "SurfaceSchemeColorSetPreferences10" ?
<string name="Group" value="SurfaceSchemeColorSetPreferences10"/>

SurfaceSchemeColorSetPreferences10 - this is a good hook for block
 

SealAlbinos

Знающий
Сообщения
64
Репутация
15
Das ist fantastisch! huge xml works valid! :smile:

I'm afraid. There may be problems?
Can you be more specific and bind to "SurfaceSchemeColorSetPreferences10" ?
<string name="Group" value="SurfaceSchemeColorSetPreferences10"/>

SurfaceSchemeColorSetPreferences10 - this is a good hook for block
Код:
<?xml version="1.0" encoding="utf-8"?>
<UserPreferences>
    <list name="Entries" type="list">
        <item>
            <string name="Group" value="SurfaceSchemeColorSetPreferences10">
                <member name="Values">
                    <int name="surface.controls.warning-text" value="-4229329"/>
                    <int name="surface.info-lines.multiple-text" value="-4229329"/>
                    <int name="surface.informer.background" value="-13210"/>
                    <int name="surface.rulers.cycle-active" value="-9282587"/>
                    <int name="surface.rulers.cycle-external" value="-10772251"/>
                    <int name="surface.rulers.cycle-local" value="-10040167"/>
                    <int name="surface.rulers.cycle-reverse" value="-4229329"/>
                    <int name="surface.status-lines.worry-text" value="-87808"/>
                    <int name="surface.system.root" value="100"/>
                </member>
            </string>
            <string name="Group" value="test">
                <member name="Values">
                    <int name="surface.controls.warning-text" value="-4229329"/>
                    <int name="surface.info-lines.multiple-text" value="-4229329"/>
                    <int name="surface.informer.background" value="-13210"/>
                    <int name="surface.rulers.cycle-active" value="-9282587"/>
                    <int name="surface.rulers.cycle-external" value="-10772251"/>
                    <int name="surface.rulers.cycle-local" value="-10040167"/>
                    <int name="surface.rulers.cycle-reverse" value="-4229329"/>
                    <int name="surface.status-lines.worry-text" value="-87808"/>
                    <int name="surface.system.root" value="200"/>
                </member>
            </string>
        </item>
    </list>
</UserPreferences>

Код:
$oXML = ObjCreate("Msxml2.DOMDocument.3.0")
$oXML.Load("test.xml")
$oAll = $oXML.SelectNodes("//string[@value='SurfaceSchemeColorSetPreferences10']/member/int[@name='surface.system.root']")

For $oEl In $oAll
    $oEl.SetAttribute("value","500")
Next

$oXML.Save("test2.xml")
 
Автор
S

semiono

Новичок
Сообщения
18
Репутация
0
It's rather strange, but the first option works better in a real situation. Second script don't work with my (realy) test.xml.
Thank you both but first better :smile:
 

Вложения

  • UserPreferences.zip
    11.8 КБ · Просмотры: 1
Последнее редактирование:
Верх