首页 > 解决方案 > 如何验证办公室颜色主题 XML?

问题描述

我想验证从用户那里收到的颜色主题。 https://docs.microsoft.com/en-us/dotnet/api/documentformat.openxml.drawing.colorscheme?view=openxml-2.8.1

正确的例子:

<clrScheme name="sample">  
  <dk1>  
    <sysClr val="windowText"/>  
  </dk1>  
  <lt1>  
    <sysClr val="window"/>  
  </lt1>  
  <dk2>  
    <srgbClr val="04617B"/>  
  </dk2>  
  <lt2>  
    <srgbClr val="DBF5F9"/>  
  </lt2>  
  <accent1>  
    <srgbClr val="0F6FC6"/>  
  </accent1>  
  <accent2>  
    <srgbClr val="009DD9"/>  
  </accent2>  
  <accent3>  
    <srgbClr val="0BD0D9"/>  
  </accent3>  
  <accent4>  
    <srgbClr val="10CF9B"/>  
  </accent4>  
  <accent5>  
    <srgbClr val="7CCA62"/>  
  </accent5>  
  <accent6>  
    <srgbClr val="A5C249"/>  
  </accent6>  
  <hlink>  
    <srgbClr val="FF9800"/>  
  </hlink>  
  <folHlink>  
    <srgbClr val="F45511"/>  
  </folHlink>  
</clrScheme>  

我认为微软会在我从类中创建一个新对象时验证颜色主题,但它没有,即使我尝试使用它。例如,如果我使用这个 xml,它会简单地接收它,但是当我在 Power Point 上应用它时,它会说文件已损坏。

<clrScheme name="sample">  
  <dk1>  
    <sysClr val="windowText"/>  
  </dk1>  
  <random>  
    <sysClr val="windowText"/>  
  </random>  
</clrScheme>  

 var scheme = new ColorScheme(xmlText);
 var hasChildren = scheme.HasChildren

有什么好的方法来验证这一点吗?

我也尝试过使用普通的 XML 验证,但我在网上找不到任何东西。到目前为止,这似乎是数百万人应该面临的问题,所以我不知道我做错了什么。

标签: c#openxml.net-5

解决方案


推荐阅读