Показать полную графическую версию : Редактирование XML
Patroklos
30-03-2018, 19:44
Здравствуйте, есть одна программа скины которой представляют из себя 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" на свои?
Язык любой.
Каким образом это лучше всего редактировать скриптом? »
WSH/PowerShell на выбор, что больше нравится.
представляют из себя XML.
Вот такого вида: »
Это не XML строго говоря — нет заголовка. Это кусок из XML-файла? Тогда покажите его весь.
Patroklos
30-03-2018, 22:55
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>
ПоШ предпочтительней. Я его чуть-чуть знаю. »
Я тоже.
Ну, например:
$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
31-03-2018, 00:15
Но это в корне неправильный подход. Правильным будет не искать некие значения, а указывать полный путь к узлу и имя атрибута. »
Есть почитать на русском? Хочу сразу правильно :).
Спасибо
Садо-мазо в извращённой форме — не моё. »
C - Садо
M - Мазо
D - Domination
С - сало
М - масло
Д - дранники
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.