AvalonEdit:如何修改xshd文件来改变元素的属性

本文关键字:文件 改变 元素 属性 xshd 何修改 修改 AvalonEdit | 更新日期: 2023-09-27 18:03:54

我尝试在c#中修改xshd文件以编程方式更改元素Color的属性前景。我试图使用xmlatrattribute来访问它并改变它,但它没有工作。我怎样才能改变呢?下面是我的xshd文件

 <?xml version="1.0"?>
<SyntaxDefinition name="Boo" extensions=".boo" xmlns="http://icsharpcode.net/sharpdevelop/syntaxdefinition/2008">
<Color name="String" foreground="Red" />
<Color name="Comment" foreground="Green" />
<!-- This is the main ruleset. -->
<RuleSet>
<Span color="Comment" begin="//" />
<Span color="Comment" multiline="true" begin="/'*" end="'*/" />
<Span color="String">
  <Begin>'</Begin>
  <End>'</End>
  <RuleSet>
    <!-- nested span for escape sequences -->
    <Span begin="''" end="." />
  </RuleSet>
</Span>
<Keywords fontWeight="bold" foreground="Green">
  <Word>IF</Word>
  <Word>IFEND</Word>
  <Word>DECLARED</Word>
</Keywords>
<!-- Digits -->
<Rule foreground="Gray">
    'b0[xX][0-9a-fA-F]+  # hex number
    |    'b
    (    'd+('.[0-9]+)?   #number with optional floating point
    |    '.[0-9]+         #or just starting with floating point
    )
    ([eE][+-]?[0-9]+)? # optional exponent
  </Rule>
<Rule  foreground="Blue">
    'w*-'w*-*'w*
  </Rule>
<Rule foreground="Pink">
    ('w*='w*)
  </Rule>
 </RuleSet>
</SyntaxDefinition>

AvalonEdit:如何修改xshd文件来改变元素的属性

使用LINQ试试:

XDocument doc = XDocument.Load("file.xml");
XNamespace ns = "http://icsharpcode.net/sharpdevelop/syntaxdefinition/2008";
var element = doc.Descendants(ns + "Color").First(x => x.Attribute("name").Value == "String");
element.SetAttributeValue("foreground", "VALUECOLOR");
doc.Save("file.xml");