【问题标题】:Best way to sort XML attributes consistently throughout XML files in C#在 C# 中对 XML 文件中的 XML 属性进行一致排序的最佳方法
【发布时间】:2011-01-20 06:00:06
【问题描述】:

我正在尝试编写一个 Xaml 解析器,它将对 xaml 文件中每个标记的所有属性进行排序,以保持代码的组织性和一致性。

我对 C# 和 LINQ 的了解相当有限,因为我是前端设计师/开发人员,而不是 C# 大师。

据我所知,xaml 是 XML,因此它只适用于任何 xml 文件。我将有参数让用户对属性进行排序。

我尝试使用 Regexp,但效果不太好,然后我尝试使用“XElement.Parse”,但没有成功。它似乎不像 x:Name 等。

最好的方法是什么?

【问题讨论】:

  • 既然属性的顺序在xml中是无关紧要的,那我先问一下……为什么?
  • 您是否在自定义解析器中正确应用了命名空间?
  • @Marc-Gravell 在处理大型项目的不同前端开发人员之间的代码可读性和可维护性方面是有意义的。就像开发人员有关于代码格式的指南和规则一样,阅读大量的 xaml 会不断地让您意识到属性顺序的标准化是多么重要。它显着加快了更改实施和错误修复。

标签: c# xml linq parsing xaml


【解决方案1】:

请出示您的 XAML。

我成功解析了带有 x:Key 属性和 self:NullableBoolToStringConvreter 节点的 XAML,来自 this sample

【讨论】:

  • 这可以是任何 xaml。我正在编写一个属性排序器,以便它适用于任何 xaml 文件。
  • 当然这可以是任何 xaml。但是您提到您在 Parse 方法上遇到错误。我重现了情况,并且成功解析了带有 x:Key、x:Name 属性的 xaml 文档。顺便问一下,为什么您使用 XElement.Parse() 而不是 XDocument.Parse()?
  • 这可能是 XDocument 解析是的,我不是 100% 确定,因为我尝试了许多不同的方法。将尝试 XElement 的 Parse。
  • 好的,再来一次。当提到 XAML 只是 XML 时,您是绝对正确的。所以函数 XDocument.Load()/XDocument.Parse() 应该成功地与任何 XAML 一起工作。如果您有相反的示例 - 请在此处发布。还是您的问题在于编写对属性进行排序的代码?
  • 它奏效了,我只是被折腾了很多,因为我发现代码示例很平均。您知道一篇好的 XElement 文章吗?谢谢。
【解决方案2】:

尝试这样的事情,使用 4.0 .NET 运行时:

http://www.codeproject.com/KB/dotnet/pitfalls_xml_4_0.aspx

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多