Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Редактирование XML (http://forum.oszone.net/showthread.php?t=334069)

Patroklos 30-03-2018 19:44 2806288

Редактирование XML
 
Здравствуйте, есть одна программа скины которой представляют из себя XML.
Вот такого вида:
Код:

<Grid>
      <Image Grid.Row="0"
            Source="{TemplateBinding Image}"
            Stretch="Uniform"
            Margin="5">
      </Image>
      <TextBlock x:Name="ButtonText" Grid.Row="1"
                Text="{TemplateBinding Text}"
                TextWrapping="Wrap"
                TextAlignment="Center"
                Margin="5,0,5,5">
      </TextBlock>
      <TextBlock x:Name="KeyText" Text="{TemplateBinding Key}"
            HorizontalAlignment="Left"
            Margin="3,2,0,0"
            Padding="0" >
      </TextBlock>
  </Grid>

Каким образом это лучше всего редактировать скриптом? Я хочу всё настроить и менять только цвета и отступы.
Вот в данном случае как мне из скрипта изменить значение Margin="5,0,5,5" на свои?
Язык любой.

Iska 30-03-2018 22:01 2806311

Цитата:

Цитата Patroklos
Каким образом это лучше всего редактировать скриптом? »

WSH/PowerShell на выбор, что больше нравится.

Цитата:

Цитата Patroklos
представляют из себя XML.
Вот такого вида: »

Это не XML строго говоря — нет заголовка. Это кусок из XML-файла? Тогда покажите его весь.

Patroklos 30-03-2018 22:55 2806331

Цитата:

Цитата Iska
WSH/PowerShell на выбор, что больше нравится. »

Мне кажется ПоШ предпочтительней. Я его чуть-чуть знаю. В идеале смд конечно. В смд я аппер нуб.
Весь файл.
Код:

<ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:MaxLauncher;assembly=MaxLauncher"
    xmlns:locala="clr-namespace:MaxLauncher">

    <!-- *********************************************************************************** -->
    <!-- TabButtonStyle -->
    <Style TargetType="{x:Type local:TabButton}">
        <Setter Property="FocusVisualStyle" Value="{x:Null}" />
        <Setter Property="BorderThickness" Value="{DynamicResource TabButton.Border.Thickness}"/>
        <Setter Property="Margin" Value="{DynamicResource TabButton.Margin}" />
        <Setter Property="BorderBrush" Value="{DynamicResource TabButton.BorderBrush}"/>
        <Setter Property="Background" Value="{DynamicResource TabButton.Background}"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type local:MButton}">
                    <Border x:Name="BD"
                            BorderBrush="{TemplateBinding BorderBrush}"
                            BorderThickness="{TemplateBinding BorderThickness}"
                            Margin="{TemplateBinding Margin}"
                            Background="{TemplateBinding Background}"
                            SnapsToDevicePixels="True"
                            CornerRadius="{DynamicResource TabButton.CornerRadius}">
                        <Grid>
                            <Grid.RowDefinitions>
                                <RowDefinition Height="*"/>
                                <RowDefinition Height="*"/>
                            </Grid.RowDefinitions>
                            <Image Grid.Row="0"
                                  Source="{TemplateBinding Image}"
                                  Stretch="Uniform"
                                  Margin="5">
                            </Image>
                            <TextBlock x:Name="ButtonText" Grid.Row="1"
                                      Text="{TemplateBinding Text}"
                                      TextWrapping="Wrap"
                                      TextAlignment="Center"
                                      TextTrimming="CharacterEllipsis"
                                      Foreground="{DynamicResource TabButton.Text.Foreground}"
                                      FontSize="{DynamicResource TabButton.Text.FontSize}"
                                      FontFamily="{DynamicResource TabButton.Text.FontFamily}"
                                                                                            ToolTip="{TemplateBinding Text}"
                                      Margin="5,0,5,5">
                            </TextBlock>
                            <TextBlock x:Name="KeyText" Text="{TemplateBinding Key}"
                                  HorizontalAlignment="Left"
                                  Margin="3,2,0,0"
                                  Foreground="{DynamicResource TabButton.Key.Foreground}"
                                  FontSize="{DynamicResource TabButton.Key.FontSize}"
                                  FontFamily="{DynamicResource TabButton.Key.FontFamily}"
                                  Padding="0" >
                            </TextBlock>
                        </Grid>
                    </Border>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsMouseOver" Value="True">
                            <Setter Property="Background" TargetName="BD" Value="{DynamicResource TabButton.MouseOver.Background}" />
                            <Setter Property="Foreground" TargetName="KeyText" Value="{DynamicResource TabButton.MouseOver.Foreground}" />
                            <Setter Property="Foreground" TargetName="ButtonText" Value="{DynamicResource TabButton.MouseOver.Foreground}" />
                        </Trigger>
                        <Trigger Property="IsFocused" Value="True">
                            <Setter Property="BorderBrush" Value="{DynamicResource TabButton.Focused.BorderBrush}" />
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</ResourceDictionary>


Iska 30-03-2018 23:56 2806338

Цитата:

Цитата Patroklos
ПоШ предпочтительней. Я его чуть-чуть знаю. »

Я тоже.

Ну, например:
Код:

$oXmlDocument = New-Object -TypeName 'System.Xml.XmlDocument'
$oXmlDocument.Load('C:\Мои проекты\0147\0001.xml')

$oNameSpace = New-Object -TypeName System.Xml.XmlNamespaceManager($oXmlDocument.NameTable)
$oNameSpace.AddNamespace("ns", $oXmlDocument.DocumentElement.NamespaceURI)

$oXmlElement = $oXmlDocument.SelectSingleNode("//ns:TextBlock[@Margin='5,0,5,5']", $oNameSpace)
$oXmlElement.Attributes.ItemOf("Margin").Value = "0,0,0,0"

$oXmlDocument.Save('C:\Мои проекты\0147\0002.xml')

Но это в корне неправильный подход. Правильным будет не искать некие значения, а указывать полный путь к узлу и имя атрибута.

Цитата:

Цитата Patroklos
В идеале смд конечно. »

Садо-мазо в извращённой форме — не моё.

Patroklos 31-03-2018 00:15 2806342

Цитата:

Цитата Iska
Но это в корне неправильный подход. Правильным будет не искать некие значения, а указывать полный путь к узлу и имя атрибута. »

Есть почитать на русском? Хочу сразу правильно :).

Спасибо

Цитата:

Цитата Iska
Садо-мазо в извращённой форме — не моё. »

C - Садо
M - Мазо
D - Domination

С - сало
М - масло
Д - дранники


Время: 19:42.

Время: 19:42.
© OSzone.net 2001-