C# 如何使用LINQ在xml中添加列表?

C# 如何使用LINQ在xml中添加列表?,c#,xml,linq,C#,Xml,Linq,我在xml中具有以下结构: <?xml version="1.0" encoding="utf-8"?> <ArrayOfNO xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <No> <Id>1</Id> <Name>txt_1</Name>

我在xml中具有以下结构:

<?xml version="1.0" encoding="utf-8"?>
<ArrayOfNO xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <No>
    <Id>1</Id>
    <Name>txt_1</Name>
    <Text>some text</Text>
    <Txt_relacionados>
      <string>txt_4</string>
      <string>txt_4</string>
      <string>txt_4</string>
    </Txt_relacionados>
    <N>0</N>
    <X>285</X>
    <Y>31</Y>
    <Externa>false</Externa>
    <EM>false</EM>
    <B>false</B>
    <K>false</K>
    <L1>false</L1>
    <L2>false</L2>
    <L3>false</L3>
    <L4>false</L4>
    <L5>false</L5>
    <L6>false</L6>
    <L7>false</L7>
    <L8>false</L8>
    <L9>false</L9>
    <L10>false</L10>
    <L11>false</L11>
    <L12>false</L12>
    <IP>0</IP>
  </No>
谢谢

在创建新元素No之前,需要先创建Txt_relacionados元素,然后在创建No时在适当的位置传递Txt_relacionados

考虑以下内容

public void inserir2(VoNo value)
{
    var rels = new XElement("Txt_relacionados");

    foreach (var x in value.Txt_relacionados)
    {
        var elem = new XElement("string", x);
        rels.Add(elem);
    }

    RefreshXDoc();
    XElement no = XElement.Load(path);

    XElement element = new XElement("No",
    new XElement("Id", value.Id),
    new XElement("Name", value.Name),
    new XElement("Text", value.Text),
    rels,
    new XElement("N", value.N),
    new XElement("X", value.X),
    new XElement("Y", value.Y),
    new XElement("Externa", value.Externa),
    new XElement("B", value.B),
    new XElement("K", value.K),
    new XElement("L1", value.L1),
    new XElement("L2", value.L2),
    new XElement("L3", value.L3),
    new XElement("L4", value.L4),
    new XElement("L5", value.L5),
    new XElement("L6", value.L6),
    new XElement("L7", value.L7),
    new XElement("L8", value.L8),
    new XElement("L9", value.L9),
    new XElement("L10", value.L10),
    new XElement("L11", value.L11),
    new XElement("L12", value.L12),
    new XElement("IP", value.IP));

    no.Add(element);
    no.Save(path);
}

txt_relacionados中的字符串采用特定格式,您可以从中找出元素名称及其值?您可以共享字符串的格式吗?此数组中的所有字符串的格式如下:txt_uu编号示例:txt_u5;txt_6;txt_10使用新的XmlArrayatTributeText_relaconados、value.txt_relaconados行时,您面临什么问题?您是否考虑过列表中的循环并为列表中的每个项目创建元素?问题是,该方法只接受一个类型为字符串的参数。我试着只把Txt_relacionados作为一个论据。但是,结果不是正确的结构。不是生成:SomeText txt_17 2而是生成:SomeText System.Xml.Serialization.XmlArrayAttribute 0事实上,我只想创建正确的结构,即使是空的和没有价值的。。。
public void inserir2(VoNo value)
        {
            RefreshXDoc();
            XElement no = XElement.Load(path);

            XElement element = new XElement("No",
                new XElement("Id", value.Id),
                new XElement("Name", value.Name),
                new XElement("Text", value.Text),

                new XmlArrayAttribute("Txt_relacionados", value.Txt_relacionados),

                new XElement("N", value.N),
                new XElement("X", value.X),
                new XElement("Y", value.Y),
                new XElement("Externa", value.Externa),
                new XElement("B", value.B),
                new XElement("K", value.K),
                new XElement("L1", value.L1),
                new XElement("L2", value.L2),
                new XElement("L3", value.L3),
                new XElement("L4", value.L4),
                new XElement("L5", value.L5),
                new XElement("L6", value.L6),
                new XElement("L7", value.L7),
                new XElement("L8", value.L8),
                new XElement("L9", value.L9),
                new XElement("L10", value.L10),
                new XElement("L11", value.L11),
                new XElement("L12", value.L12),
                new XElement("IP", value.IP));

            no.Add(element);
            no.Save(path);
        }
public void inserir2(VoNo value)
{
    var rels = new XElement("Txt_relacionados");

    foreach (var x in value.Txt_relacionados)
    {
        var elem = new XElement("string", x);
        rels.Add(elem);
    }

    RefreshXDoc();
    XElement no = XElement.Load(path);

    XElement element = new XElement("No",
    new XElement("Id", value.Id),
    new XElement("Name", value.Name),
    new XElement("Text", value.Text),
    rels,
    new XElement("N", value.N),
    new XElement("X", value.X),
    new XElement("Y", value.Y),
    new XElement("Externa", value.Externa),
    new XElement("B", value.B),
    new XElement("K", value.K),
    new XElement("L1", value.L1),
    new XElement("L2", value.L2),
    new XElement("L3", value.L3),
    new XElement("L4", value.L4),
    new XElement("L5", value.L5),
    new XElement("L6", value.L6),
    new XElement("L7", value.L7),
    new XElement("L8", value.L8),
    new XElement("L9", value.L9),
    new XElement("L10", value.L10),
    new XElement("L11", value.L11),
    new XElement("L12", value.L12),
    new XElement("IP", value.IP));

    no.Add(element);
    no.Save(path);
}