C# 字符串数组到XML
我在c#中有一个字符串数组,其中包含地址行。阵列中至少有2行,最多有4行。此数组需要转换为需要4个地址元素的XML查询。我就是这样做的,而且很有效,但似乎应该有一个更有效的方法C# 字符串数组到XML,c#,arrays,C#,Arrays,我在c#中有一个字符串数组,其中包含地址行。阵列中至少有2行,最多有4行。此数组需要转换为需要4个地址元素的XML查询。我就是这样做的,而且很有效,但似乎应该有一个更有效的方法 switch (address.Length) { case 2: address2[0] = ""; address2[1] = ""; address2[2] = a
switch (address.Length)
{
case 2:
address2[0] = "";
address2[1] = "";
address2[2] = address[0];
address2[3] = address[1];
break;
case 3:
address2[0] = "";
address2[1] = address[0];
address2[2] = address[1];
address2[3] = address[2];
break;
case 4:
address2[0] = address[0];
address2[1] = address[1];
address2[2] = address[2];
address2[3] = address[3];
break;
default:
MessageBox.Show("Invalid Address Block Length");
break;
}
这将填充第二个字符串数组,最终创建XML,如:
"<ADDRESS0>" + address2[0] + "</ADDRESS0>" +
"<ADDRESS1>" + address2[1] + "</ADDRESS1>" +
"<ADDRESS2>" + address2[2] + "</ADDRESS2>" +
"<ADDRESS3>" + address2[3] + "</ADDRESS3>"
“”+address2[0]+“”+
“+address2[1]”+
“+address2[2]+”+
“+address2[3]”
即使内部文本为空,XML也必须包含4个地址元素。通过字符串连接创建XML确实不是一个好主意。总有一天你会搞砸的
您可以使用LINQ to XML来创建元素,在数组的前面添加n个额外的空行,总共得到4个:
string[] address = {"first", "second", "third"};
var extra = Math.Max(0, 4 - address.Length);
var elements = Enumerable.Repeat("", extra)
.Concat(address)
.Select((line, index) => new XElement("ADDRESS" + index, line));
输出:
<ADDRESS0></ADDRESS0>
<ADDRESS1>first</ADDRESS1>
<ADDRESS2>second</ADDRESS2>
<ADDRESS3>third</ADDRESS3>
通过字符串连接创建XML确实不是一个好主意。总有一天你会搞砸的
您可以使用LINQ to XML来创建元素,在数组的前面添加n个额外的空行,总共得到4个:
string[] address = {"first", "second", "third"};
var extra = Math.Max(0, 4 - address.Length);
var elements = Enumerable.Repeat("", extra)
.Concat(address)
.Select((line, index) => new XElement("ADDRESS" + index, line));
输出:
<ADDRESS0></ADDRESS0>
<ADDRESS1>first</ADDRESS1>
<ADDRESS2>second</ADDRESS2>
<ADDRESS3>third</ADDRESS3>
我认为这可能是您在实际生成值时可以做的最有效的事情-但是,您也可以在循环中进行:
var address = new string[]{ "a", "b", "c" };
var address2 = new string[]{ "", "", "", "" };
for (int i = 0; i < address.Length; i++)
{
address2[address2.Length - i - 1] = address[address.Length - i - 1];
}
var address=新字符串[]{“a”、“b”、“c”};
var address2=新字符串[]{“”、“”、“”、“”};
for(int i=0;i
我认为这可能是您在实际生成值时可以做的最有效的事情-但是,您也可以在循环中进行:
var address = new string[]{ "a", "b", "c" };
var address2 = new string[]{ "", "", "", "" };
for (int i = 0; i < address.Length; i++)
{
address2[address2.Length - i - 1] = address[address.Length - i - 1];
}
var address=新字符串[]{“a”、“b”、“c”};
var address2=新字符串[]{“”、“”、“”、“”};
for(int i=0;i
有一整套称为“查询”xml的功能。它还可以帮助构建XML,有一整套的功能叫做“查询”XML。它还可以帮助构建XML。