Извлечь данные нескольких узлов узла root из файловых узлов XML в c# - PullRequest
1 голос
/ 27 февраля 2020

В приведенном ниже коде XML есть узел ProductList root, и я хочу извлечь все данные, находящиеся внутри этого узла, в переменную для дальнейшей работы.

Требуется собрать эти данные и использовать эти данные через foreach l oop, где я храню данные, внутренние для тега <product>, собранные в соответствии с атрибутом имени этого тега в переменной, и затем он будет собирать данные внутреннего элемента в него.

Код:

<ProductsList name="root">
          <Product name="name1">
            <ProductName></ProductName>
            <ProductType></ProductType>
            <ProductServiceURL></ProductServiceURL>
            <ProductApplicationURL></ProductApplicationURL>
            <ProductLastModifiedDate>2</ProductLastModifiedDate>
            <ServerFolderPath></ServerFolderPath>
            <LocalFolderPath></LocalFolderPath>
          </Product>
          <Product name="name2">
            <ProductName></ProductName>
            <ProductType></ProductType>
            <ProductServiceURL></ProductServiceURL>
            <ProductApplicationURL></ProductApplicationURL>
            <ProductLastModifiedDate></ProductLastModifiedDate>
            <ServerFolderPath></ServerFolderPath>
            <LocalFolderPath></LocalFolderPath>
          </Product>
  </ProductsList>

В приведенном выше коде я хочу дать имя <Product> и собрать данные в этом теге. Это означает, что если я дам name1, тогда данные из первого <Product> получат, а name2 даст данные со второго <Product>

Требуемый вывод:

  1. Для имени1:

        ProductName = value
        ProductType = value
        ProductServiceURL = value
        ProductApplicationURL = value
        ProductLastModifiedDate = value
        ServerFolderPath = value
        LocalFolderPath = value
    
  2. Для имени2:

        ProductName = value
        ProductType = value
        ProductServiceURL = value
        ProductApplicationURL = value
        ProductLastModifiedDate = value
        ServerFolderPath = value
        LocalFolderPath = value
    

1 Ответ

1 голос
/ 27 февраля 2020

Вы можете попробовать с XDocument

var productName = "name2";

var xdoc = XDocument.Load(fileName);
var nodes = xdoc.Descendants("Product")
                .Where(x => (string)x.Attribute("name") == productName);

Console.WriteLine($"For {productName}:");
foreach (var value in nodes.Elements())
{
    Console.WriteLine($"{value.Name} = {value.Value.ToString()}");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...