Skip to content

Commit b75a103

Browse files
committed
Support accessing multiple children through the relative path.
1 parent af55135 commit b75a103

File tree

1 file changed

+35
-32
lines changed

1 file changed

+35
-32
lines changed

StructuredXmlEditor/Data/DataTransformer.cs

Lines changed: 35 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -141,55 +141,58 @@ public IEnumerable<XElement> TransformElement(XElement root, XElement originalEl
141141
throw new Exception("Unknown variable source '" + variableSplit[0] + "'");
142142
}
143143

144-
XElement targetEl;
144+
List<XElement> targetEls;
145145
if (variableSplit[1].Length > 0)
146146
{
147-
targetEl = GetElements(sourceEl, variableSplit[1]).FirstOrDefault();
147+
targetEls = GetElements(sourceEl, variableSplit[1]);
148148
}
149149
else
150150
{
151-
targetEl = sourceEl;
151+
targetEls = new List<XElement>() { sourceEl };
152152
}
153153

154-
string variableValue;
155-
if (targetEl == null)
154+
foreach (var targetEl in targetEls)
156155
{
157-
variableValue = "";
158-
}
159-
else if (variableSplit[2] == "name")
160-
{
161-
variableValue = targetEl.Name.ToString();
162-
}
163-
else if (variableSplit[2] == "contents")
164-
{
165-
if (targetEl.HasElements)
156+
string variableValue;
157+
if (targetEl == null)
166158
{
167159
variableValue = "";
168-
foreach (var el in targetEl.Elements())
160+
}
161+
else if (variableSplit[2] == "name")
162+
{
163+
variableValue = targetEl.Name.ToString();
164+
}
165+
else if (variableSplit[2] == "contents")
166+
{
167+
if (targetEl.HasElements)
168+
{
169+
variableValue = "";
170+
foreach (var el in targetEl.Elements())
171+
{
172+
variableValue += el.ToString();
173+
}
174+
}
175+
else
169176
{
170-
variableValue += el.ToString();
177+
variableValue = targetEl.Value;
171178
}
172179
}
180+
else if (variableSplit[2] == "refkey")
181+
{
182+
variableValue = targetEl.Attribute(DataDefinition.MetaNS + "RefKey").Value;
183+
}
184+
else if (!string.IsNullOrWhiteSpace(variableSplit[2]))
185+
{
186+
throw new Exception("Unknown variable part type '" + variableSplit[2] + "'!");
187+
}
173188
else
174189
{
175-
variableValue = targetEl.Value;
190+
variableValue = targetEl.ToString();
176191
}
177-
}
178-
else if (variableSplit[2] == "refkey")
179-
{
180-
variableValue = targetEl.Attribute(DataDefinition.MetaNS + "RefKey").Value;
181-
}
182-
else if (!string.IsNullOrWhiteSpace(variableSplit[2]))
183-
{
184-
throw new Exception("Unknown variable part type '" + variableSplit[2] + "'!");
185-
}
186-
else
187-
{
188-
variableValue = targetEl.ToString();
189-
}
190-
variableValue = variableValue.Replace("xmlns:meta=\"Editor\"", "");
192+
variableValue = variableValue.Replace("xmlns:meta=\"Editor\"", "");
191193

192-
expandedTemplate += variableValue;
194+
expandedTemplate += variableValue;
195+
}
193196
}
194197
else
195198
{

0 commit comments

Comments
 (0)