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

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

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 までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!