2

假设您有一个具有以下设置的配置文件:

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

对于我的生活,我无法弄清楚如何让 XmlMassUpdate 注入以下内容:

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

结果如下所示:

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

我要拍摄的是:

<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>

编辑:我找到了一个临时解决方案(见下文)......不过,仍然对更好的东西感兴趣。

<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>
4

2 回答 2

3

答案是将唯一属性应用于元素并将其用作 xmu:key(请参阅上面的编辑)。

于 2011-03-16T22:44:16.183 回答
2

获取社区任务代码。代替:

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

和:

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;
                }
            }

在方法中: private XmlNode locateTargetNode(XmlNode parentNode, XmlNode nodeToFind, XmlAttribute keyAttribute)

重建。你完成了 :)

于 2012-06-22T09:32:06.660 回答