問題タブ [xmltextreader]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1211 参照

vb.net - xml解析エラー処理またはXMLTextReaderのカーソルを元に戻して開始する方法は?

api_requestAPIメソッドを引数として取り返す関数がありますXMLTextReader

この関数をさまざまな場所から呼び出してサイトAPIにリクエストを送信しますが、メソッドに応じて結果の解析方法が大きく異なります。

したがって、それぞれの方法で、私は次のようなものを持っています:

ご覧のとおり、私はコードを持っていますElseIf s.Name = "error" Then error_handler(s, "user.get")。これは、エラーが発生した場合、サーバーは常に次のようなものを返すためです。

これはerror_handlerSubで解析され、エラーに応じて次のアクションが選択されます。

このコード は機能しますが、すべてのメソッドが関数を呼び出しますが、ElseIf s.Name = "error" 毎回api_requestそのようなエラーが発生するかどうかを確認する必要があります。リーダーを返す前にapi_request関数のエラーをチェックすることは可能ですか?問題は、そこでxmlを読み始めてもエラーがない場合、とにかくリーダーを先頭に配置できないことです。

0 投票する
1 に答える
914 参照

c# - XmlTextReader オブジェクトを返します。.Close() を呼び出すことができますか

私は今、問題の原因を突き止めようとしています。例外処理が不足しているため、エラーの原因を推測しています。これが私の質問です。メソッドが XmlTextReader オブジェクトを返す場合、finally ブロックが .Close() メソッドを実行する try/catch/finally でラップされている場合、そのオブジェクトは null になりますか?

はいの場合、これらのリソースを適切に破棄するにはどうすればよいですか? .Clone() または .Copy() メソッドがないことはわかっていますが、これを達成する別の方法はありますか? XmlTextReader および XmlReader オブジェクトの破棄についても気にする必要がありますか?

ありがとう

0 投票する
3 に答える
2173 参照

c# - XMLTextReader C#

上記のようなデータを含むxmlファイルがあります。間に来るすべてのデータを取得したい

文字列変数に。

私にはいくつかの制限があります。つまり、これには XMLTextReader のみを使用する必要があります。これを行うには、xdocument を使用せずに XmlTextReader を使用するだけです。

0 投票する
1 に答える
227 参照

xmltextreader - XmlTextReaderを使用して属性値C#でxmlからデータを取得する

次の内容のファイルがあります (myfile.xml)。すべてのコンテンツを (製品ノードを含む) 製品の下に取得する必要がありますid=1

つまり、結果は次のようになります。

これどうやってするの?

XmlTextReader使用する必要がある、またはXPathNavigatorこれにのみ使用する必要があるという制限があります。それ以外の場合は、これを使用できたはずです:属性 vlaue による xml からのデータの取得

0 投票する
3 に答える
343 参照

c# - 特定の属性を持つノードのすべてのサブノードを取得するにはどうすればよいですか?

私は次のようなxmlドキュメントを持っています:

私がやりたい<Category>のは、属性が必要なものであるかどうかを確認することです。たとえば、「Bebidas」などです。したがって、関心のある部分は次のとおりです。

これができたので、すでに行ったことと同様のことをしたいと思います。

まず、すべてを印刷したいと思います。

そして、私は食べ物が属性を持っていたものだけを印刷したいcocina="si"ので、:

だから私はさまざまな質問があります:

まず、どのアプローチを使用するか、XmlDocument、XmlReader、XmlTextReaderなどの可能なメソッドと実装が豊富にあることに混乱しています。

この質問から、私はXmlDocumentの方が使いやすく、それは素晴らしい、単純である、ということを収集しました。あなたが理解できるように、私はXmlファイルの解析にまったく慣れていないからです。

さて、実際の実装では、私は多くの成功を収めることなくあらゆる種類のことを試みました。私はいくつかの部分を行うことができるようですが、すべてを一緒に行うことはできません。

これは出力します:

これは理にかなっていますが、カテゴリに属性があるかどうかを確認するにはどうすればよいですname="cocina"か?

私はこのような何かが役立つと思います:

MoveToAttribute()しかし、XmlTextReaderのようなものは見つかりません。

そして、もう一度、属性があるかどうかを確認するにはどうすればよいですcocina="si"か?

0 投票する
1 に答える
2442 参照

c# - XMLTextWriter を使用して、指定した位置に XML ノードを書き込む方法

以下のようなxmlファイルがあります。

「Content」の後に新しいノードを書きたいのですが、XMLDocument を使用してそれを行う方法を知っています。それを行うために XMLTextWriter を使用する方法はありますか?

0 投票する
2 に答える
670 参照

c# - XmlTextReaderを使用して、特定の要素内の特定の値を外部の.xmlファイルからコマンドラインに出力するのが難しい

<name></name>少なくとも最初の要素のタグの間に値を格納して出力しようとしていますが、の値を<item></item>「検索」または「取得」できません<name></name>

シナリオをより明確に説明してください...

抽出したname値を取得して変換し(すべて小文字で、単語間のスペースにアンダースコアを追加)、「images」フォルダー内の画像ファイル名を検索できるようにする予定です。

一致するものが見つかった場合-画像ファイルへのファイルパスを取得し、それを変数内に保存して<image></image>から、現在の<item></item>要素内に作成し、タグ間にファイルパスを貼り付けます。別の999アイテムについても同じことを繰り返します。一部のアイテムnameがどの画像ファイル名とも一致しない場合は、ログテキストファイルを作成し、一致しなかったアイテムの名前を保存します。

XML構造

コード

0 投票する
1 に答える
475 参照

asp.net - xmltextreader の反復処理

次の形式のxmlがあります。

今、私はこのxmlを反復してレポートノードを取得し、そこからタイトル/pdfリンク/サイズなどの子ノードを取得したいと考えています。for ループを使用したループ。これを達成するために xmltextreader を使用したいと思います。while を使用してみましたが、反復後にループが 1 つしか得られません。どうしてか分かりません。for ループの場合、 for(loop when reader.element("reports)){} のように反復し、残りのノードを取得して、それらを配列またはリストなどに入れます。それらをリストに格納したら、フィード内でそれらを表示したい. これを行うための最良の方法はどれですか? pls help.

0 投票する
3 に答える
330 参照

c# - C# XMLReader 奇妙な 17 番目の位置で閉じられた XMLReader のバグ

たくさんのものを持つ ListView があります。17 番目の場所にあるものはすべて壊れます (ObjectDisposedException "Cannot read from a closed TextReader")。1 から 16 だけでなく 18 から 24 も問題なく動作します。x を 17 番目から 16 番目に移動すると、再び機能しますが、新しい 17 番目が壊れます。私のコードは特定の場所を参照していません。

XML ファイルの形式は次のとおりです。

コードは簡単です。興味のあるプロファイルを見つけてサブツリーとして返す方法があります

そして、サブツリーからリスト 1 と 2 を引き出すメソッドがあります。

そして、ここで問題が発生します。ObjectDisposedException 閉じた TextReader から読み取ることができません。subtree.ReadToFollowing("ListTwo") に到達すると常に中断しますが、XML リストで 17 番目のプロファイルを選択している場合のみです。どの時点でもテキストリーダーを閉じる方法がわかりません。また、これはプロファイル 18、19、20 など、および 1 ~ 16 で機能しますが、そこに何があるかに関係なく、何らかの理由で常に位置 17 で壊れます。17 番目のスポットが他のスポットとどのように違うのかわかりません。

助けてください!

0 投票する
3 に答える
4847 参照

c# - XmlTextReader を使用して、大きな XML ファイルを複数の出力 xml に分割する必要があります。

XML ファイルを取得し、入力ファイルの何千もの繰り返しノードから複数の出力 xml ファイルを作成する必要があります。ソースファイル「AnimalBatch.xml」は次のようになります。

<?xml version="1.0" encoding="utf-8" ?>
<Animals>
<Animal id="1001">
<Quantity>One</Quantity>
<Adjective>Red</Adjective>
<Name>Rooster</Name>
</Animal>
<Animal id="1002">
<Quantity>Two</Quantity>
<Adjective>Stubborn</Adjective>
<Name>Donkeys</Name>
</Animal>
<Animal id="1003">
<Quantity>Three</Quantity>
<Color>Blind</Color>
<Name>Mice</Name>
</Animal>
</Animals>

しかし、実際には CR/LF 文字は含まれていません。実際のテキスト ストリームは次のようになります。

<?xml version="1.0" encoding="utf-8" ?><Animals><Animal id="1001"><Quantity>One</Quantity><Adjective>Red</Adjective><Name>Rooster</Name></Animal><Animal id="1002"><Quantity>Two</Quantity><Adjective>Stubborn</Adjective><Name>Donkeys</Name></Animal><Animal id="1003"><Quantity>Three</Quantity><Color>Blind</Color><Name>Mice</Name></Animal></Animals>

プログラムは、繰り返しの「動物」を分割し、次の名前の 3 つのファイルを生成する必要があります: Animal_1001.xml、Animal_1002.xml、および Animal_1003.xml

XmlDocument を使用して、これについて以前に質問がありましたが、既に回答がありました。
参照: [XmlDocument を使用して XML ファイルを複数の xml に分割する][1]

この質問は、XmlReader を使用して要素を取得し、それらから XmlDocument 要素を作成する方法に関するものです。


Animal_1001.xml:
<?xml version="1.0" encoding="utf-8"?>
<Animal>
<Quantity>One</Quantity>
<Adjective>Red</Adjective>
<Name>Rooster</Name>
</Animal>


Animal_1002.xml
<?xml version="1.0" encoding="utf-8"?>
<Animal>
<Quantity>Two</Quantity>
<Adjective>Stubborn</Adjective>
<Name>Donkeys</Name>
</Animal>


Animal_1003.xml>
<?xml version="1.0" encoding="utf-8"?>
<Animal>
<Quantity>Three</Quantity>
<Adjective>Blind</Adjective>
<Name>Mice</Name>
</Animal>

動作するコードは次のとおりです-ただし、入力ファイルに改行がある場合のみ:

各要素の後に改行がある「AnimalBatch.xml」のコピーに対してこのプログラムを実行すると、動作し、必要に応じて Animal_xxxx.xml ファイルが作成されます。AnimalBatch.xml がフォーマットされていないテキストのストリームのように見える場合、最初の Animal を取得し、1001 の ID を取得して、出力ファイルを正常に書き込みます。後続の Animal 要素を読み取ることはできますが、「id」属性を取得できず、属性から読み取ろうとしている strSeq 変数が null または空白であるため、「Animal_.xml」という名前の出力ファイルを書き込むことになります。最終的に、2 番目のファイルには次の内容のみが含まれます。

<?xml version="1.0" encoding="utf-8"?>
<Animal />

これにより、XmlReader は、少なくとも doc.Read() メソッド、 (doc.Name=="Animal") ステートメント、またはそれ以降の "strSeq = doc.GetAttribute("id"); " の範囲で、 -<Animal id="1002"> タグの後に CR/LF がある場合、動作が異なります。

私の本当の質問は、doc.GetAttribute("id"); を実行するときだと思います。ドキュメント内のカーソルはどこにありますか? そして、「1001」以降のものを取得できないのはなぜですか - これは機能しますか?

John は、XML は書式設定を気にしないと言いました - 私もいつもそう思っていました - しかし、これは困惑しています。また、私のアプリケーションでは、SSIS を介して SQL から引き出しており、XML オブジェクトではなくテキスト ストリームであるため、XML を取得できる唯一の方法はフォーマットされていません。