Pergunta

Eu tenho XmlDocument carregado na memória e criou nova XmlElement. Agora eu estou tentando adicionar XmlElement para o caminho / relatório / seção / hosts, mas eu não sei como. I pode adicioná-lo facilmente abaixo nó raiz do XML, mas eu não consigo descobrir como eu pode navegar nível mais profundo em XML e apenas anexar lá. Em pseudo Eu estou tentando fazer isso:

doc.SelectNodes ( "/ relatório / seção / hosts") AppendChild (subroot);.

O código:

        XmlDocument doc = new XmlDocument();

        doc.Load("c:\\data.xml");

        //host
        XmlElement subRoot = doc.CreateElement("host");

        //Name
        XmlElement ElName = doc.CreateElement("name");
        XmlText TxtName = doc.CreateTextNode("text text");
        ElName.AppendChild(TxtName);
        subRoot.AppendChild(ElName);
        doc.DocumentElement.AppendChild(subRoot);

        doc.Save("c:\\data.xml");
Foi útil?

Solução

Tente SelectSingleNode vez de SelectNodes

XmlElement parent = (XmlElement)doc.SelectSingleNode("/report/section/hosts")
parent.AppendChild(subRoot);

Outras dicas

Você está quase lá. Tente usar SelectSingleNode vez:

XmlNode node = doc.SelectSingleNode("/report/section/hosts");
node.AppendChild(subRoot);

O método SelectNodes retorna uma lista de nós. Você deve usar SelectSingleNode vez ...

por exemplo. (Topo da minha cabeça, não testar em Visual Studio)

doc.SelectSingleNode("/report/section/hosts").AppendChild(subRoot);

Você precisa obter uma referência a um XmlElement no seu doc ??(que não seja a raiz) para acrescentar. Há uma série de métodos acessível em XmlDocument tais como GetElementById e SelectSingleNode que fazer isso para você de diferentes maneiras, a pesquisa com o gosto.

Dito isso, toda a API nesta área é geralmente considerado como um pouco doloroso, você tem LINQ disponíveis?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top