XmlMassUpdate 多个值(MSBuild 社区任务)

发布于 2024-10-18 03:18:09 字数 1195 浏览 7 评论 0原文

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

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

Say you have a config file with the following settings:

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

For the life of me, I can't figure out how to get XmlMassUpdate to inject the following:

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

The result looks like this:

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

What I'm shooting for is:

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

EDIT: I found a temporary solution (see below)... still interested in something better, though.

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

┼── 2024-10-25 03:18:09

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

The answer is to apply a unique attribute to the element and use that as the xmu:key (see EDIT above).

风尘浪孓 2024-10-25 03:18:09

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

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 XmlNodelocateTargetNode(XmlNodeparentNode, XmlNodenodeToFind, XmlAttribute keyAttribute)

重建。
你已经完成了:)

Get community tasks code.
Replace:

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

With:

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

In method :
private XmlNode locateTargetNode(XmlNode parentNode, XmlNode nodeToFind, XmlAttribute keyAttribute)

Rebuild.
You're done :)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文