【问题标题】:How to format XDocument code to make it the most readable如何格式化 XDocument 代码以使其更具可读性
【发布时间】:2016-12-08 08:36:44
【问题描述】:

我已经编写了一个将列表(包含类对象)序列化为 xml 字符串的方法,但是由于嵌套太多,我无法弄清楚如何格式化我的代码以使其更具可读性。这是xml示例:

<Text>
    <Info name="example" language="en-US">example</Info>
    <Info name="example" language="en-GB">example</Info>
</Text>

这是(最有可能的)格式非常糟糕的代码:

XDocument xdoc = new XDocument
    (
     new XElement
        ("Text",
            Infos.Select(item =>
                new XElement
                ("Info",
                    new XAttribute("name", item.Name),
                    new XAttribute("language", item.Language),
                item.Value)
            )
        )
    );
return xdoc.ToString();

这是一个相当短的示例,但它可能会在未来增长,因此,我想让我的代码更具可读性 - 我该怎么做?

【问题讨论】:

  • 这个问题可能更多属于codereview.stackexchange.com
  • 我想这是版主可以决定的事情,因为我无法删除和移动这个问题,因为它已经有一个答案。不过,如果模组决定删除这个问题,他/她有权这样做。
  • 您应该像格式化典型的 XML 文档一样格式化它。开始和结束标签将在一个缩进级别,它的内容(属性、值和其他元素)将在下一个级别。在这里,这意味着构造函数在一层调用名称,在下一层调用其他参数(内容),然后是与构造函数在同一层次的右括号(或者如果足够短,在最后一项的末尾) .您的方法与MSDN 的建议大相径庭。
  • 仅此链接就非常准确地回答了我的问题,谢谢您指出。

标签: c# lambda linq-to-xml


【解决方案1】:

我喜欢这种格式

//Option 1
XDocument xdoc1 = new XDocument();
xdoc1.Add(new XElement("Text",
    Infos.Select(item => new XElement("Info",
        new XAttribute("name", item.Name),
        new XAttribute("language", item.Language),
        item.Value
        )
    )
));

//Option 2
XDocument xdoc2 = new XDocument();
xdoc2.Add(new XElement("Text", new object[] {
    Infos.Select(item => new XElement("Info", new object[] {
        new XAttribute("name", item.Name),
        new XAttribute("language", item.Language),
        item.Value
    }))
}));

【讨论】:

  • 我在这里看到的主要问题是XElements 没有与其结束括号对齐。万一将来xml扩展了新元素,这段代码是否仍然可读?
  • 我更新了代码以添加一个稍微不同的选项。使用 new object[] { 添加一个花括号,有时有助于使代码更具可读性。
猜你喜欢
  • 2020-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-02
  • 2011-11-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多