'这个文档已经有一个'DocumentElement'节点。

时间:2018-02-01 11:01:35

标签: c# xml

我正在尝试创建以下格式的

<TemplateID>xxxxx</TemplateID>
        <CaptionOptions>
          <CaptionField>
            <Field>xxx</Field>
            <Text>xxx</Text>
          </CaptionField>
          <CaptionField>
            <Field>xxxx</Field>
            <Text>""</Text>
          </CaptionField>
        </CaptionOptions>

这是我写的代码

XmlDocument xml2 = new XmlDocument();
        XmlElement e = xml2.CreateElement("TemplateID");
        e.InnerText = "xxxx";
        xml2.AppendChild(e);
        XmlElement root2 = xml2.CreateElement("CaptionOptions");
        xml2.AppendChild(root2);   //error here
        XmlElement child2a = xml2.CreateElement("CaptionField");
        root2.AppendChild(child2a);
        XmlElement child2aa = xml2.CreateElement("Field");
        child2a.InnerText = "xxxx";
        XmlElement child2ab = xml2.CreateElement("Text");
        child2a.InnerText = "xxxx";
        child2a.AppendChild(child2aa);
        child2a.AppendChild(child2ab);


        child2a.AppendChild(child2aa);
        child2a.AppendChild(child2ab);

我的真实代码与我之前想要提出的代码不同......

2 个答案:

答案 0 :(得分:1)

您可以使用

XmlElement child = xml.CreateElement("Players");
child.SetAttribute("Nationality", "England");
child.InnerText = "Rooney";

答案 1 :(得分:0)

您需要创建属性并将它们附加到Player元素。但是你的xml层次结构看起来不正确。

如上所述,现已编辑。

       XmlDocument doc = new XmlDocument();
        XmlElement template = doc.CreateElement("Template");
        XmlNode id = doc.CreateElement("TemplateID");
        id.InnerText = "123456";

        template.AppendChild(id);

        doc.AppendChild(template);

        XmlElement options = doc.CreateElement("CaptionOptions");
        XmlElement captionField = doc.CreateElement("CaptionField");
        XmlElement field1 = doc.CreateElement("Field");
        field1.InnerText = "Field1Text";
        XmlElement text1 = doc.CreateElement("Field");
        text1.InnerText = "Text1Text";

        captionField.AppendChild(field1);
        captionField.AppendChild(text1);

        options.AppendChild(captionField);

        template.AppendChild(options);

        string xml = doc.OuterXml;

希望有所帮助。