Обновление: обновлен вопрос для решения проблемы элементов, а не атрибутов, и добавлен мой вывод XML
Я должен передать приложению некоторые строки в кодировке XML (я не часто использую языки разметки и не очень разбираюсь в их нюансах).
Формат, который мне нужно отправить, находится ниже (вне моего контроля):
<ROOT>
<Unit UnitName="Unit XYZ">
<Scheds Qty="5" ProdId="214" Comments="" />
<Scheds Qty="200" ProdId="125" Comments="Need by 1/23" />
<Scheds Qty="5000" ProdId="3100" Comments="" />
</Unit>
<Unit UnitName="Unit ABC">
<Scheds Qty="5" ProdId="214" Comments="" />
<Scheds Qty="200" ProdId="125" Comments="Need by 1/25" />
<Scheds Qty="5000" ProdId="3100" Comments="" />
</Unit>
</ROOT>
Я пытался написать это, используя XML Writer
, но у меня проблемы с атрибутом Scheds
, являющимся дубликатом.
Как вы можете видеть ниже, я возился с методом WriteString
, но я считаю, что он нужен мне как атрибут.
Мой код ниже:
//Top level root element
writer.WriteStartElement("ROOT");
//loop through list and determine the pu desc to create the xml element
foreach (Tuple<int, List<PLYOrder>> t in allOrders)
{
var unit = PUList.Where(x => x.PUId == t.Item1).First().PUDesc.ToString();
//Start each Unit as a new element
writer.WriteStartElement("Unit");
writer.WriteAttributeString("UnitName", unit);
foreach(PLYOrder p in t.Item2)
{
var qty = $"Qty=\"{p.Qty.ToString()}\"";
var prodId = $"ProdId=\"{p.Product.Id.ToString()}\"";
var Comments = $"Comments=\"{p.Comments}\"";
writer.WriteStartElement("Scheds", qty);
writer.WriteEndElement();
writer.WriteStartElement("Scheds", prodId);
writer.WriteEndElement();
writer.WriteStartElement("Scheds", comments);
writer.WriteEndElement();
}
writer.WriteEndElement();
}
writer.WriteEndElement();
Создает следующий вывод в представлении XML отладчика Visual Studio для переменной:
-<ROOT>
-<Unit UnitName="XYZ">
<Scheds xmlns="Qty="5""/>
<Scheds xmlns="ProdId="360""/>
<Scheds xmlns="Comments="hhh""/>
<Scheds xmlns="Qty="66""/>
<Scheds xmlns="ProdId="356""/>
<Scheds xmlns="Comments="""/>
</Unit>
-<Unit UnitName="ABC">
<Scheds xmlns="Qty="44""/>
<Scheds xmlns="ProdId="356""/>
<Scheds xmlns="Comments="gg""/>
</Unit>
</ROOT>