もくじ
https://tera1707.com/entry/2022/02/06/144447
やりたいこと
xmlファイルを読み込みたい。
具体的には、VisualStudioのC#(.net6)のプロジェクトファイル(.csproj)を読み込んで、中身の情報を見たい。
csprojのサンプルはこんな感じ。
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net6.0</TargetFramework> <ImplicitUsings>enable</ImplicitUsings> <Nullable>enable</Nullable> <AssemblyVersion>1.0.1234.5</AssemblyVersion> <Version>1.2.5000.0</Version> <Authors>MySakuseiSha</Authors> <Company>MyCompany</Company> <Product>MySeihinMei</Product> <Description>MySetsumei</Description> <Copyright>MyCopyRight</Copyright> </PropertyGroup> </Project>
やりかた
System.Xml.Linq
名前空間の XElement
を使う。
XElement xml = XElement.Load(x); // 全部取る var infos = xml.Elements(); //--------------------------------- // 全部取る foreach (var info in infos) { Debug.WriteLine(" " + info.Name + ", " + info.Value); foreach (var element in info.Elements()) { Debug.WriteLine(" " + element.Name + ", " + element.Value); } }
このコードで、上に挙げたcsprojnサンプルを読んだときの結果の一部
PropertyGroup, Exenet6.0enableenable1.0.1234.51.2.5000.0MySakuseiShaMyCompanyMySeihinMeiMySetsumeiMyCopyRight OutputType, Exe TargetFramework, net6.0 ImplicitUsings, enable Nullable, enable AssemblyVersion, 1.0.1234.5 Version, 1.2.5000.0 Authors, MySakuseiSha Company, MyCompany Product, MySeihinMei Description, MySetsumei Copyright, MyCopyRight
値が取れてる。
参考
MS公式 XElement クラス
https://learn.microsoft.com/ja-jp/dotnet/api/system.xml.linq.xelement?view=net-7.0