Como posso navegar mais em dados XML e em Acrescentar no-lo
-
23-08-2019 - |
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");
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?