入力ストリーム、つまりos.Stdin
:非常に大きなXMLファイルを処理するGoプログラムがあるので処理できませんそれはすぐにすべてです。要素の「outerxml」を取得する(innerxmlのように、要素自体を含む)
私は後処理のために特定の性質を持つすべてのXML要素を抽出したいと考えています。
抽出する要素を特定し、関連する開始要素と終了要素を取得するのに問題はありません。しかし、全要素を文字列としてダンプする方法がわかりません。内側のXMLだけではありません。
例えば、想像し、私は次のXMLがあります。この例では
<a>
<b somethingUseful="1">
<c>Hello</c>
<d>world</d>
</b>
<e>
<foo/>
</e>
<!-- Imagine there were 1 billion lines in between -
I need to stream this! -->
<b somethingUseful="321">
<c>Hello again</c>
</b>
</a>
を、私は最初から最後まで、出力<b>
の各要素にしたいです。
Here comes a B:
<c>Hello</c>
<d>world</d>
Here comes a B:
<c>Hello again</c>
とても近く、それは自分自身を<b>
タグ(および属性)を欠けている:DecodeElement
とinnerxml
を使用して
は、私はストリーミング方式で、はるかにこれを取得することができますよ。私はデコードのストリーミング性を犠牲にすることなく、その最後のステップをどうやって作るかを考え出すことができませんでした。
明確にするために、私が望む出力は何かのようである:ここでは
Here comes a B:
<b somethingUseful="1">
<c>Hello</c>
<d>world</d>
</b>
Here comes a B:
<b somethingUseful="321">
<c>Hello again</c>
</b>
この例をenunciates遊び場だと私はここまできでやった:
https://play.golang.org/p/XqJY_1pa9j
あー、これは素晴らしいスタートです!私はもっときれいにして、あなたに戻ってくる方法を探します:Dありがとう! –
ここでは 'os.Stdin'と一緒に作業しているようですが、2つのファイルとして開くことはできません(そうする方法がない限り::O)が、扱いにくい。とにかくマルチライターがやっているようだ。 –
ああ、私はあなたが 'ioutil.Discard'の愚かさにコピーする必要があると思う – nothingmuch