C# を使用して XML ドキュメント内の名前空間を簡単にクリアする
XML 処理では、名前空間がしばしば頭痛の種となり、招かれざる客のようにデータが混乱します。これらの冗長な名前空間を削除するのは面倒な場合がありますが、.NET 3.5 SP1 上の C# の機能を利用すると、簡単に名前空間に別れを告げることができます。
XML ドキュメントの名前空間クリーニングの実装を支援するために、シンプルで効率的なソリューションを提供します。インターフェイスベースの RemoveAllNamespaces()
関数は、XML ドキュメントから名前空間を削除するシンプルかつ洗練された方法を提供します。
RemoveAllNamespaces()
機能の詳しい説明
ソリューションの中核は、コンパクトな RemoveAllNamespaces()
関数です。この関数は、XML ドキュメントを入力として受け取り、すべての名前空間を削除します。
<code class="language-csharp">public static string RemoveAllNamespaces(string xmlDocument) { XElement xmlDocumentWithoutNs = RemoveAllNamespaces(XElement.Parse(xmlDocument)); return xmlDocumentWithoutNs.ToString(); }</code>
基礎となるコア再帰関数 RemoveAllNamespaces()
は、面倒な作業を処理します。
<code class="language-csharp">private static XElement RemoveAllNamespaces(XElement xmlDocument) { if (!xmlDocument.HasElements) { XElement xElement = new XElement(xmlDocument.Name.LocalName); xElement.Value = xmlDocument.Value; foreach (XAttribute attribute in xmlDocument.Attributes()) xElement.Add(attribute); return xElement; } return new XElement(xmlDocument.Name.LocalName, xmlDocument.Elements().Select(el => RemoveAllNamespaces(el))); }</code>
XML の例と結果
このソリューションの威力を説明するために、名前空間を含む XML の例を見てみましょう。
<code class="language-xml"><?xml version="1.0" encoding="utf-16"?> <ArrayOfInserts xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <insert> <offer xmlns="http://schema.peters.com/doc_353/1/Types">0174587</offer> <type2 xmlns="http://schema.peters.com/doc_353/1/Types">014717</type2> <supplier xmlns="http://schema.peters.com/doc_353/1/Types">019172</supplier> <id_frame xmlns="http://schema.peters.com/doc_353/1/Types" /> <type3 xmlns="http://schema.peters.com/doc_353/1/Types"> <type2 /> <main>false</main> </type3> <status xmlns="http://schema.peters.com/doc_353/1/Types">Some state</status> </insert> </ArrayOfInserts></code>
RemoveAllNamespaces()
関数を呼び出した後、XML ドキュメントが変換され、すべての名前空間が削除されます。
<code class="language-xml"><?xml version="1.0" encoding="utf-16"?> <ArrayOfInserts> <insert> <offer>0174587</offer> <type2>014717</type2> <supplier>019172</supplier> <id_frame /> <type3> <type2 /> <main>false</main> </type3> <status>Some state</status> </insert> </ArrayOfInserts></code>
概要
RemoveAllNamespaces()
ソリューションを使用すると、C# XML ドキュメントから名前空間を削除するクリーンで信頼性の高い方法が得られます。単一の要素を扱う場合でも、複雑な階層を扱う場合でも、私たちのコードは XML データに名前空間がないことを保証します。
以上がC# を使用して XML ドキュメントから名前空間を効率的に削除する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。