Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 字符串数组到XML_C#_Arrays - Fatal编程技术网

C# 字符串数组到XML

C# 字符串数组到XML,c#,arrays,C#,Arrays,我在c#中有一个字符串数组,其中包含地址行。阵列中至少有2行,最多有4行。此数组需要转换为需要4个地址元素的XML查询。我就是这样做的,而且很有效,但似乎应该有一个更有效的方法 switch (address.Length) { case 2: address2[0] = ""; address2[1] = ""; address2[2] = a

我在c#中有一个字符串数组,其中包含地址行。阵列中至少有2行,最多有4行。此数组需要转换为需要4个地址元素的XML查询。我就是这样做的,而且很有效,但似乎应该有一个更有效的方法

        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。