golang は XML ヘッダーを削除します

WBOY
リリース: 2023-05-15 11:33:07
オリジナル
704 人が閲覧しました

golang では、xml ファイルを読み取るときに、xml ファイルのヘッダー (つまり、) に関する問題が頻繁に発生し、xml ファイルの解析が失敗する可能性があります。

次に、XML ヘッダーを削除するいくつかの方法を紹介します。

最初の方法: XML ヘッダーを手動で削除します。

strings.Trim 関数を使用して XML ヘッダーを削除できます。コードは次のとおりです。

func removeXmlHeader(xmlContent string) string {
    return strings.Trim(xmlContent, "")
}
ログイン後にコピー

上記のコードでは、strings.Trim 関数を使用して、xmlContent 内の最初の 3 つの特殊文字 (つまり、ASCII コードが である BOM 文字) を削除します。その XML ヘッダー。

2 番目の方法: xml.Decoder を使用する

XML ヘッダーを削除するもう 1 つの方法は、xml.Decoder オブジェクトを使用して XML ファイルを読み取り、 decoder.Token この関数は、xml ファイル内の Token オブジェクトを取得します。トークンが宣言タグ (つまり、) の場合、XML ファイルを解析する前にそれをスキップできます。コードは次のとおりです:

func removeXmlHeader(xmlContent string) (string, error) {
    decoder := xml.NewDecoder(strings.NewReader(xmlContent))
    var result strings.Builder
    for {
        token, err := decoder.Token()
        if err == io.EOF {
            break
        }
        if err != nil {
            return "", err
        }
        switch t := token.(type) {
        case xml.ProcInst:
            if t.Target == "xml" {
                continue
            }
        }
        result.WriteString(fmt.Sprintf("%v", token))
    }
    return result.String(), nil
}
ログイン後にコピー

上記のコードでは、 xml .Decoder オブジェクトを作成し、decoder.Token 関数を使用して XML ファイルから Token オブジェクトを読み取ります。読み取られた Token オブジェクトが宣言タグ (つまり、xml.ProcInst) である場合、そのターゲットが xml であるかどうかを判断します。そうである場合は、この Token オブジェクトをスキップします。それ以外の場合は、xml ファイル全体が読み取られるまで次の Token オブジェクトの読み取りを続けます。

Token オブジェクトを strings.Builder オブジェクトに入れると、処理された XML 文字列を返すことができます。

3 番目の方法: xml.Unmarshal を使用する

xml ヘッダーを削除する 3 番目の方法は、xml.Unmarshal を使用して、xml ファイルの解析時に xml ヘッダーをスキップすることです。 。

func removeXmlHeader(xmlContent string, v interface{}) error {
    xmlContent = strings.Trim(xmlContent, "")
    return xml.Unmarshal([]byte(xmlContent), v)
}
ログイン後にコピー

上記のコードでは、strings.Trim 関数を通じて XML ファイル ヘッダーを削除し、xml.Unmarshal 関数を呼び出して XML ファイルを解析します。 XML ヘッダーを簡単に削除できるように、ターゲット オブジェクトに追加します。

要約すると、上記は XML ヘッダーを削除する 3 つの方法ですが、どの方法を選択するかは、特定のビジネス ニーズによって異なります。これらの方法を使用する場合は、それぞれの方法の特性に注意して、問題を解決するために適切な方法を選択する必要があります。

以上がgolang は XML ヘッダーを削除しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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