LINQ to XML は、効率的で簡潔な XML データ処理方法を提供します。 Descendants
や Element
などのこれらのメソッドには、パラメーターとして XName
が必要です。あなたが提供したコードでは、これらのメソッドで名前空間を使用するのに問題があります。この記事では、LINQ to XML を効果的に使用して XML 名前空間を処理する方法について説明します。
指定する最初の XML 文字列には、Result
要素内に名前空間が含まれています。ただし、LINQ to XML コードでは、名前空間プレフィックスのない要素名のみが使用されます。これを修正するには、参照される名前空間に XNamespace
を指定する必要があります。この例では、2 つの名前空間「https://www.php.cn/link/b443471216b517cc30cb9eea354e023d」が関係しています。
以下の修正されたコード スニペットには、XNamespace
の使用法が含まれています:
<code class="language-csharp">string theXml = @"<response console.writeline="" data="" element="" elements="from" foreach="" http:="" in="" new="" ns=""http://myvalue.com"" nsa=""http://schemas.datacontract.org/2004/07/My.Namespace"" select="" thebool="(bool)data.Element(nsa" theid="(int)data.Element(nsa" var="" xdocument="" xmlelements="XDocument.Parse(theXml);" xmlelements.descendants="" xmlns="" xmlns:a="" xmlns:i="" xnamespace=""><p>通过正确使用XNamespace,您的代码可以正确解析XML并检索您期望的值。记住,在使用LINQ to XML方法访问XML元素时,要包含正确的命名空间前缀。</p></response>"; XNamespace ns = "http://myvalue.com"; XNamespace nsa = "http://schemas.datacontract.org/2004/07/My.Namespace"; XDocument xmlDoc = XDocument.Parse(theXml); // 此处需要根据实际XML结构修改代码,以下为示例 var results = from data in xmlDoc.Descendants(nsa + "Result") select new { TheId = (int?)data.Element(nsa + "TheId"), TheBool = (bool?)data.Element(nsa + "TheBool") }; foreach (var result in results) { Console.WriteLine($"TheId: {result.TheId}, TheBool: {result.TheBool}"); }</code>
この例では、XNamespace
を使用して名前空間を持つ XML 要素に正しくアクセスする方法を理解できます。 実際の XML 構造に従って、コード内の要素名と名前空間を調整してください。 重要なのは、曖昧さを避けるために XNamespace
を使用して要素の名前を修飾することです。
以上がLINQ to XML を使用して XML 名前空間を効果的に処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。