Xmlmassupdate Несколько значений (MSBuild Community Passions)
-
15-11-2019 - |
Вопрос
Скажем, у вас есть файл конфигурации со следующими настройками:
<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>
. Решение
The answer is to apply a unique attribute to the element and use that as the xmu:key (see EDIT above).
Другие советы
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 :)
Не связан с StackOverflow