Как добавить вложенный родительский узел в существующий узел - PullRequest
0 голосов
/ 09 июля 2019

Я сгенерировал xml с помощью метода DataTable.WriteXML(), который преобразует поля моей таблицы в элементы файла xml - это именно то, что мне нужно.

Теперь я хочу добавить еще один элемент и сделать существующий элемент его дочерним.

Существующий:

<DocketImport>
  <Docket>
    <XRefCode>1578</XRefCode>
    <Name>1578</Name>
    <PieceRate>0</PieceRate>
    <OrgXRefCode>terminalA</OrgXRefCode>
  </Docket>
</DocketImport>

Желаемая:

<DocketImport>
  <Docket>
    <XRefCode>1578</XRefCode>
    <Name>1578</Name>
    <PieceRate>0</PieceRate>
    <Org>        
     <OrgXRefCode>terminalA</OrgXRefCode>
    </Org>
  </Docket>
</DocketImport>

1 Ответ

0 голосов
/ 09 июля 2019

В случае приемлемости следующего результата:

<?xml version="1.0" standalone="yes"?>
<DocumentElement>
  <DataTable1>
    <XRefCode>1578</XRefCode>
    <Name>1578</Name>
    <PieceRate>0</PieceRate>
    <Org xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <OrgXRefCode>terminalA</OrgXRefCode>
    </Org>
  </DataTable1>
</DocumentElement>

Вы можете добиться желаемого поведения, определив пользовательский тип для последних столбцов таблицы данных

public class Org
{
    public string OrgXRefCode { get; set; }
}

Чем ваша инициализация DataTable может выглядеть следующим образом:

var dataTable = new DataTable("DataTable2");

dataTable.Columns.AddRange(new DataColumn[]{
    new DataColumn("XRefCode"),
    new DataColumn("Name"),
    new DataColumn("PieceRate"),
    new DataColumn("Org", typeof(Org))
});

var dataRow = dataTable.NewRow();
dataRow["XRefCode"] = 1578;
dataRow["Name"] = 1578;
dataRow["PieceRate"] = 0;
dataRow["Org"] = new Org()
{
    OrgXRefCode = "terminalA"
};

dataTable.Rows.Add(dataRow);

вызов dataTable.WriteXml() выдаст ваш ожидаемый XML

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...