Pergunta

Digamos que você tenha um arquivo de configuração com as seguintes configurações:

<someNode>
    <node>value A</node>
    <node>value B</node>
    <node>value C</node>     
</someNode>

Durante toda a minha vida, não consigo descobrir como fazer com que o XmlMassUpdate injete o seguinte:

<someNode>
    <node>value 1</node>
    <node>value 2</node>
    <node>value 3</node>     
</someNode>

O resultado é assim:

<someNode>
    <node>value 1</node>
    <node>value B</node>
    <node>value C</node>  
</someNode>

O que estou buscando é:

<someNode>
    <node>value A</node>
    <node>value B</node>
    <node>value C</node>
    <node>value 1</node>
    <node>value 2</node>
    <node>value 3</node>    
</someNode>

EDITAR:Encontrei uma solução temporária (veja abaixo) ...ainda estou interessado em algo melhor.

<someNode>
    <node xmu:key="id" id="1">value A</node>
    <node xmu:key="id" id="2">value B</node>
    <node xmu:key="id" id="3">value C</node>
</someNode>
Foi útil?

Solução

A resposta é aplicar um atributo exclusivo ao elemento e usá-lo como xmu:key (veja EDIT acima).

Outras dicas

Obtenha o código das tarefas da comunidade.Substituir:

if (keyAttribute == null)
{
                xpath = nodeToFind.Name;
}

Com:

if (keyAttribute == null)
            {
                xpath = nodeToFind.Name;
                if (nodeToFind.ChildNodes.Count == 1 && nodeToFind.FirstChild.NodeType == XmlNodeType.Text)
                {
                    xpath = string.Format("{0}[{1}='{2}']/{1}", parentNode.LocalName, nodeToFind.LocalName,
                                          nodeToFind.InnerText, nodeToFind.LocalName);
                    parentNode = parentNode.ParentNode;
                }
            }

No método:private XmlNode locateTargetNode(XmlNode parentNode, XmlNode nodeToFind, XmlAttribute keyAttribute)

Reconstruir.Você Terminou :)

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