一串XElement中的格式未格式化

本文关键字:格式化 格式 XElement 一串 | 更新日期: 2023-09-27 17:59:36

我正在尝试格式化一个XML元素,其中三个字符串用空格填充到10个字符。这是我正在使用的代码。

这三个字符串设置在模型中。

    public string a{ get; set; }
    public string b{ get; set; }
    public string c{ get; set; }

然后格式化为XElement

var itemElement = new XElement("item",
                            new XElement("abc", string.Format("{0:-10}{1:-10}{2:-10}", i.a, i.b, i.c))
                    );

它应该产生"a(填充)b(填充)c(填充)",但在节点内产生"abc"。

有什么想法吗?

一串XElement中的格式未格式化

正确的String.Format语法是使用逗号进行对齐,而不是冒号:

string.Format("{0,-10}{1,-10}{2,-10}", i.a, i.b, i.c)

根据MSDN:

格式项的语法如下如下:

{index[,length][:formatString]}

尝试包装CData元素:

var itemElement = new XElement("item", 
    new XCData(
        new XElement("abc", string.Format("{0:-10}{1:-10}{2:-10}", i.a, i.b, i.c))));

您需要这样做,因为默认情况下XML解析器并不认为空白很重要。使用CData的另一种选择是xml:space属性,它也应该产生所需的结果。有关详细信息,请参阅此MSDN页面。