ホームページ > バックエンド開発 > C++ > C# を使用して XML ドキュメントから名前空間を効率的に削除する方法

C# を使用して XML ドキュメントから名前空間を効率的に削除する方法

Linda Hamilton
リリース: 2025-01-23 22:31:10
オリジナル
653 人が閲覧しました

How to Efficiently Remove Namespaces from XML Documents Using C#?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート