【问题标题】:'This document already has a 'DocumentElement' node.''这个文档已经有一个'DocumentElement'节点。'
【发布时间】:2018-02-01 19:59:17
【问题描述】:

我正在尝试创建以下格式的 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);

我的真实代码与我之前试图询问的不同......

【问题讨论】:

  • XmlElement 从来没有Value,而是有InnerTextchild.InnerText = "Rooney";

标签: c# xml


【解决方案1】:

你可以使用

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

【讨论】:

    【解决方案2】:

    您需要创建属性并将它们附加到 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;
    

    希望对您有所帮助。

    【讨论】:

    • XmlElement 和 XmlNode 的区别?
    • 我想添加一个像 xxxxxxxxxxxx 这样的文档xxxx""
    • 一个 xmlelement 是一个 XMLNode 的子类。 XMLNode 是基类.. 我认为。我发布的答案为您创建了文档。该文档具有另存为方法,因此您可以将其保存到文件中。
    • 我得到了,“'这个文档已经有一个'DocumentElement'节点。' "
    • 你显然没有发布所有代码。如果您运行我自己发布的代码,它就可以工作。你不能适应我给你的东西吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多