Вывод XML документа на ASP. NET MVC - PullRequest
0 голосов
/ 29 апреля 2020

Я делаю документацию схемы MS SQL и хочу отобразить ее в приложении ASP. NET MVC. У меня есть схема, выведенная в файл XML.

Есть ли способ добавить несколько списков одновременно, чтобы они отображались рядом. Примерно так: enter image description here

Вместо:

my_table

Col1

Col2

1

2

XML Файл

<test>
    <sys.tables TableName="table">
        <sys.columns Name="Col1" Position="1" Data_Type="NVARCHAR" />
        <sys.columns Name="Col2" Position="2" Data_Type="NVARCHAR" />
    </sys.tables>
</test>

Я читаю из него в приложении. NET.

Модель

public class DocModel
{
    public string TableName { get; set; }

    public List<string> ColumnNames { get; set; }

    public List<string> ColumnPosition { get; set; }
}

Я планирую добавить намного больше столбцов для отображения.

Контроллер

public IActionResult Index() {
    List<DocModel> documents = new List<DocModel>();

    XDocument doc = XDocument.Load(@"Schema.xml");

    string tableName = "";
    List<string> columnNames = new List<string>();
    List<string> columnPosition = new List<string>();

    foreach (XElement Tables in doc.Descendants("test")) {

        foreach (XElement Table in Tables.Descendants("sys.tables")) {

            foreach (XAttribute Column in Table.Descendants("sys.columns").Attributes()) {

                if (Column.Name == "Name") {
                    columnNames.Add(Column.Value);
                } else if (Column.Name == "Position") {
                    columnPosition.Add(Column.Value);
                }

            }
            documents.Add(new DocModel {
                TableName = Table.Attribute("TableName").Value,
                ColumnNames = columnNames,
                ColumnPosition = columnPosition
            });
        }
    }

    return View(documents);
}

Просмотр

@model IEnumerable<DocModel>

@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
</head>
<body>

    @foreach (DocModel doc in Model) {
        <h2>@doc.TableName</h2>

        @foreach (var col in doc.ColumnNames) {
            <p>@col</p>
        }
        @foreach (var col in doc.ColumnPosition) {
            <p>@col</p>
        }
    }

</body>
</html>

Извините за длинный пост, любая помощь очень ценится.

...