以下のXMLコードにはProductList
ルートノードがあり、そのノードの内部にあるすべてのデータを変数に取得して、さらにアクティビティを実行したいと考えています。
要件は、そのデータを収集し、foreachループを介してそのデータを使用することです。このループでは<product>
、変数内のタグのname属性に従って収集されたタグの内部データを格納し、内部要素のデータをに収集します。
コード:
<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が2番目のデータを取得します。<Product>
必要な出力:
name1の場合:
ProductName = value
ProductType = value
ProductServiceURL = value
ProductApplicationURL = value
ProductLastModifiedDate = value
ServerFolderPath = value
LocalFolderPath = value
name2の場合:
ProductName = value
ProductType = value
ProductServiceURL = value
ProductApplicationURL = value
ProductLastModifiedDate = value
ServerFolderPath = value
LocalFolderPath = value
あなたはで試すことができます 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()}");
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加