XDocument で名前空間を使用して XML を解析する方法
名前空間を含む XML を扱う場合、コード内で名前空間を正しく処理することが重要です。正しい名前空間を指定しないと、XDocument は XML を効果的に解析できない可能性があります。
次の XML の例を考えてみましょう。
<E2ETraceEvent xmlns="http://schemas.microsoft.com/2004/06/E2ETraceEvent"> <System xmlns="http://schemas.microsoft.com/2004/06/windows/eventlog/system"> <EventID>589828</EventID> <Correlation ActivityID="{00000000-0000-0000-0000-000000000000}"> </Correlation> </System> </E2ETraceEvent>
XDocument を指定せずにこの XML を解析しようとすると、名前空間では、特定の要素に null 値が発生する場合があります。この問題を説明するコード スニペットを次に示します。
XDocument xDoc = XDocument.Parse(XMLString); XElement xEl1 = xDoc.Element("E2ETraceEvent"); XElement xEl2 = xEl1.Element("System"); XElement xEl3 = xEl2.Element("Correlation"); XAttribute xAtt1 = xEl3.Attribute("ActivityID"); String sValue = xAtt1.Value; // Returns null
解決策: 名前空間の使用
名前空間を使用して XML を正しく解析するには、次の戦略を使用する必要があります。
この解決策を示す更新されたコード スニペットは次のとおりです。
XNamespace nsSys = "http://schemas.microsoft.com/2004/06/windows/eventlog/system"; XElement xEl2 = xDoc.Element(nsSys + "System"); XElement xEl3 = xEl2.Element(nsSys + "Correlation"); XAttribute xAtt1 = xEl3.Attribute("ActivityID"); String sValue = xAtt1.Value; // Returns the ActivityID
名前空間を使用する正しく実行すると、コードが名前空間を含む XML ドキュメントからデータを正確に抽出して操作できることを確認できます。
以上がXDocument を使用して名前空間を持つ XML ドキュメントを適切に解析するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。