# Functions
CopyTokenは、Tokenのコピーを返します。.
Escapeは [EscapeText] と同様ですが、エラーの戻り値を省略します。 これはGo 1.0との後方互換性のために提供されています。 Go 1.1以降を対象とするコードは [EscapeText] を使用するべきです。.
EscapeTextは、プレーンテキストデータsの適切にエスケープされたXML相当物をwに書き込みます。.
Marshalは、vのXMLエンコーディングを返します。
Marshalは、配列またはスライスを処理するために、各要素をマーシャリングします。 Marshalは、ポインタが指す値をマーシャリングするか、ポインタがnilの場合は何も書き込まないことで、ポインタを処理します。 Marshalは、インターフェース値が含む値をマーシャリングするか、インターフェース値がnilの場合は何も書き込まないことで、インターフェース値を処理します。 Marshalは、その他のすべてのデータを処理するために、データを含む1つ以上のXML要素を書き込みます。
XML要素の名前は、以下の優先順位で取得されます: - データが構造体の場合、XMLNameフィールドのタグ - [Name] 型のXMLNameフィールドの値 - データを取得するために使用された構造体フィールドのタグ - データを取得するために使用された構造体フィールドの名前 - マーシャルされた型の名前
構造体のXML要素には、構造体のエクスポートされた各フィールドのマーシャルされた要素が含まれますが、以下の例外があります: - 上記で説明したXMLNameフィールドは省略されます。 - タグ "-" のフィールドは省略されます。 - タグ "name,attr" のフィールドは、XML要素内で指定された名前の属性になります。 - タグ ",attr" のフィールドは、XML要素内でフィールド名の属性になります。 - タグ ",chardata" のフィールドは、文字データとして書き込まれ、XML要素としては書き込まれません。 - タグ ",cdata" のフィールドは、<![CDATA[ ..
MarshalIndentは [Marshal] と同様に動作しますが、各XML要素は新しい インデントされた行から始まり、その行はprefixで始まり、ネストの深さに応じて indentの一つ以上のコピーに続きます。.
NewDecoderは、rから読み取る新しいXMLパーサーを作成します。 もしrが [io.ByteReader] を実装していない場合、NewDecoderは 自身でバッファリングを行います。.
NewEncoderは、wに書き込む新しいエンコーダを返します。.
NewTokenDecoderは、基礎となるトークンストリームを使用して新しいXMLパーサーを作成します。.
Unmarshalは、XMLエンコードされたデータを解析し、結果を vが指す値に格納します。vは任意の構造体、スライス、または文字列でなければなりません。 vに収まらない形式の良いデータは破棄されます。
Unmarshalはreflectパッケージを使用するため、エクスポートされた(大文字の)フィールドにのみ割り当てることができます。 Unmarshalは、XML要素名をタグ値と構造体フィールド名にマッチさせるために、大文字と小文字を区別する比較を使用します。
Unmarshalは、以下のルールを使用してXML要素を構造体にマップします。 ルールでは、フィールドのタグは、構造体フィールドのタグに関連付けられた 'xml'キーの値を指します(上記の例を参照してください)。
- 構造体がタグが",innerxml"の[]byte型またはstring型のフィールドを持つ場合、 Unmarshalはそのフィールドに要素内にネストされた生のXMLを蓄積します。 他のルールは依然として適用されます。
- 構造体がName型のフィールドXMLNameを持つ場合、 Unmarshalはそのフィールドに要素名を記録します。
- XMLNameフィールドが"名前"または"名前空間-URL 名前"の形式の関連タグを持つ場合、 XML要素は指定された名前(およびオプションで名前空間)を持たなければならず、 そうでない場合、Unmarshalはエラーを返します。
- XML要素が、",attr"を含む関連タグを持つ構造体フィールド名と一致する名前の属性、 または"名前,attr"の形式の構造体フィールドタグの明示的な名前を持つ場合、 Unmarshalはそのフィールドに属性値を記録します。
- XML要素が前のルールで処理されない属性を持ち、 構造体が",any,attr"を含む関連タグを持つフィールドを持つ場合、 Unmarshalは最初のそのようなフィールドに属性値を記録します。
- XML要素が文字データを含む場合、そのデータは タグが",chardata"の最初の構造体フィールドに蓄積されます。 構造体フィールドは[]byte型またはstring型を持つことができます。 そのようなフィールドがない場合、文字データは破棄されます。
- XML要素がコメントを含む場合、それらは タグが",comment"の最初の構造体フィールドに蓄積されます。 構造体フィールドは[]byte型またはstring型を持つことができます。 そのようなフィールドがない場合、コメントは破棄されます。
- XML要素が、タグが"a"または"a>b>c"の形式のプレフィックスと一致する名前のサブ要素を含む場合、 Unmarshalは指定された名前を持つ要素を探してXML構造に降りていき、 最も内側の要素をその構造体フィールドにマップします。 ">"で始まるタグは、フィールド名に続く">"で始まるタグと同等です。
- XML要素が、名前が構造体フィールドのXMLNameタグと一致し、 前のルールに従って明示的な名前タグを持たないサブ要素を含む場合、 Unmarshalはそのサブ要素をその構造体フィールドにマップします。
- XML要素が、モードフラグ(",attr", ",chardata"など)を持たないフィールド名と一致する サブ要素を含む場合、Unmarshalはそのサブ要素をその構造体フィールドにマップします。
- XML要素が、上記のルールのいずれにも一致しないサブ要素を含み、 構造体がタグ",any"のフィールドを持つ場合、Unmarshalはそのサブ要素をその構造体フィールドにマップします。
- 匿名の構造体フィールドは、その値のフィールドが外部の構造体の一部であるかのように処理されます。
- タグ"-"を持つ構造体フィールドは、決してアンマーシャルされません。
UnmarshalがUnmarshalerインターフェースを実装するフィールドタイプに遭遇した場合、 UnmarshalはそのUnmarshalXMLメソッドを呼び出してXML要素から値を生成します。 それ以外の場合、値が [encoding.TextUnmarshaler] を実装している場合、 Unmarshalはその値のUnmarshalTextメソッドを呼び出します。
Unmarshalは、XML要素をstringまたは[]byteにマップします。これは、 その要素の文字データの連結をstringまたは[]byteに保存することで行います。 保存された[]byteは決してnilになりません。
Unmarshalは、属性値をstringまたは[]byteにマップします。これは、 値をstringまたはスライスに保存することで行います。
Unmarshalは、属性値を [Attr] にマップします。これは、 名前を含む属性をAttrに保存することで行います。
Unmarshalは、スライスの長さを拡張し、要素または属性を新しく作成された値にマッピングすることで、 XML要素または属性値をスライスにマッピングします。
Unmarshalは、XML要素または属性値をboolにマッピングします。 これは、文字列で表されるブール値に設定することで行います。空白はトリムされ、無視されます。
Unmarshalは、フィールドを文字列値を10進数で解釈した結果に設定することで、 XML要素または属性値を整数または浮動小数点フィールドにマッピングします。 オーバーフローのチェックはありません。空白はトリムされ、無視されます。
Unmarshalは、要素名を記録することで、XML要素をNameにマッピングします。
Unmarshalは、ポインタを新しく割り当てられた値に設定し、その値に要素をマッピングすることで、 XML要素をポインタにマッピングします。
要素が欠落しているか、属性値が空の場合、ゼロ値としてアンマーシャルされます。 フィールドがスライスの場合、ゼロ値がフィールドに追加されます。それ以外の場合、 フィールドはそのゼロ値に設定されます。.
# Constants
Headerは、[Marshal] の出力と一緒に使用するのに適した一般的なXMLヘッダーです。 これはこのパッケージの出力に自動的に追加されるものではなく、便宜上提供されています。.
# Variables
HTMLAutoCloseは、自動的に閉じるとみなすべきHTML要素のセットです。
[Decoder.Strict] と [Decoder.Entity] フィールドのドキュメンテーションを参照してください。.
HTMLEntityは、標準的なHTMLエンティティ文字の変換を含むエンティティマップです。
[Decoder.Strict] と [Decoder.Entity] フィールドのドキュメンテーションを参照してください。.
# Structs
Attrは、XML要素内の属性(Name=Value)を表します。.
Decoderは、特定の入力ストリームを読み取るXMLパーサーを表します。 パーサーは、その入力がUTF-8でエンコードされていると仮定します。.
Encoderは、XMLデータを出力ストリームに書き込みます。.
EndElementは、XMLの終了要素を表します。.
Nameは、名前空間識別子(Space)で注釈付けされたXML名(Local)を表します。 [Decoder.Token] によって返されるトークンでは、Space識別子は パースされるドキュメントで使用される短いプレフィックスではなく、 正規のURLとして与えられます。.
ProcInstは、<?target inst?>の形式のXML処理命令を表します。.
StartElementは、XMLの開始要素を表します。.
SyntaxErrorは、XML入力ストリームの構文エラーを表します。.
TagPathErrorは、競合するパスを持つフィールドタグの使用によって アンマーシャル処理中に発生したエラーを表します。.
UnsupportedTypeErrorは、[Marshal] がXMLに変換できないタイプに遭遇したときに返されます。.
# Interfaces
Marshalerは、自身を有効なXML要素にマーシャルできるオブジェクトが実装するインターフェースです。
MarshalXMLは、レシーバをゼロ個以上のXML要素としてエンコードします。 通常、配列やスライスは、エントリごとに一つの要素としてエンコードされます。 startを要素タグとして使用することは必須ではありませんが、そうすることで [Unmarshal] がXML要素を正しい構造体フィールドにマッチさせることができます。 一般的な実装戦略の一つは、所望のXMLに対応するレイアウトを持つ別の 値を構築し、それをe.EncodeElementを使用してエンコードすることです。 もう一つの一般的な戦略は、e.EncodeTokenを繰り返し呼び出して、 XML出力を一つずつトークンとして生成することです。 エンコードされたトークンのシーケンスは、ゼロ個以上の有効な XML要素を構成しなければなりません。.
MarshalerAttrは、自身を有効なXML属性にマーシャルできるオブジェクトが実装するインターフェースです。
MarshalXMLAttrは、レシーバのエンコードされた値を持つXML属性を返します。 属性名としてnameを使用することは必須ではありませんが、そうすることで [Unmarshal] が属性を正しい構造体フィールドにマッチさせることができます。 MarshalXMLAttrがゼロ属性 [Attr]{}を返す場合、出力には属性が生成されません。 MarshalXMLAttrは、フィールドタグに"attr"オプションを持つ構造体フィールドのみで使用されます。.
TokenReaderは、XMLトークンのストリームをデコードできるものを指します。 これには、[Decoder] も含まれます。
Tokenがトークンの読み取りに成功した後にエラーまたはファイル終了の状態に遭遇した場合、 それはそのトークンを返します。それは同じ呼び出しから(非nilの)エラーを返すか、 次の呼び出しからエラー(とnilトークン)を返すかもしれません。 この一般的なケースの一例は、トークンストリームの終わりで非nilのトークンを返すTokenReaderが、 io.EOFまたはnilエラーのどちらかを返す可能性があるということです。 次のReadはnil, [io.EOF] を返すべきです。
Tokenの実装は、nilトークンとnilエラーを返すことを推奨されていません。 呼び出し元はnil, nilの返り値を何も起こらなかったことを示すものとして扱うべきです。 特に、これはEOFを示すものではありません。.
Unmarshalerは、自分自身のXML要素の説明をアンマーシャルできるオブジェクトが実装するインターフェースです。
UnmarshalXMLは、与えられた開始要素で始まる単一のXML要素をデコードします。 エラーを返す場合、外部のUnmarshalへの呼び出しは停止し、 そのエラーを返します。 UnmarshalXMLは正確に一つのXML要素を消費しなければなりません。 一般的な実装戦略の一つは、期待されるXMLに一致するレイアウトを持つ 別の値にアンマーシャルし、そのデータをレシーバにコピーすることです。 もう一つの一般的な戦略は、d.Tokenを使用してXMLオブジェクトを 一つずつトークンで処理することです。 UnmarshalXMLはd.RawTokenを使用してはなりません。.
UnmarshalerAttrは、自分自身のXML属性の説明をアンマーシャルできるオブジェクトが実装するインターフェースです。
UnmarshalXMLAttrは単一のXML属性をデコードします。 エラーを返す場合、外部の [Unmarshal] への呼び出しは停止し、 そのエラーを返します。 UnmarshalXMLAttrは、フィールドタグに"attr"オプションを持つ構造体フィールドのみで使用されます。.
# Type aliases
CharDataは、XMLエスケープシーケンスがそれらが表す文字に置き換えられた XML文字データ(生テキスト)を表します。.
Commentは、<!--comment-->の形式のXMLコメントを表します。 バイトには、<!-- および --> のコメントマーカーは含まれません。.
Directiveは、<!text>形式のXML指示を表します。 バイトには、<! および > のマーカーは含まれません。.
Tokenは、次のトークンタイプのいずれかを保持するインターフェースです: [StartElement]、[EndElement]、[CharData]、[Comment]、[ProcInst]、または [Directive]。.
UnmarshalErrorは、アンマーシャル処理中のエラーを表します。.