XElement中的string.Format不格式化

时间:2011-06-20 20:33:37

标签: c# xml string

我正在尝试格式化一个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”。

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

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

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

Per MSDN

  

格式项的语法为   如下:

     

{索引[,长度] [:formatString的]}

答案 1 :(得分:0)

尝试换行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属性,它也应该产生所需的结果。请参阅this MSDN page for详细信息。