問題タブ [xmlreader]

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 に答える
5669 参照

whitespace - XElement.ReadFrom(XmlReader) から作成された XElement オブジェクトから空白を削除する方法

大きなxmlファイルを解析しています。そのため、XElement.Load() の代わりに XElement と組み合わせて XmlReader を使用しています。

以下とここに示すように、XmlReader から XElement オブジェクトとして作成しました。

この XElement オブジェクトのコンテンツを空白なしの文字列としてデータベースに保存したいと考えています。以下の 3 つの方法のいずれも機能しません。XElement.Load() を使用して xml をメモリにロードすると、ToString(SaveOptions.DisableFormatting) が機能します。

XmlReader オブジェクトに使用している XmlReaderSettings は以下のとおりです。IgnoreWhitespace =true/false を試してみましたが運が悪かったのですが、一部の要素がスキップされるため true に設定できません (スキップの理由については、空白区切りがない場合に XmlReader が他のすべての要素をスキップする理由を参照してください)。

XElement オブジェクトを解析すると機能しますが、XElement.Parse() が xml をメモリにロードするため、XmlReader を使用する目的全体が無効になります。

空白を削除するにはどうすればよいですか?

編集:これは私がしなければならなかったことです:

  1. 要素のスキップは、2 つの読み取りが原因でreader.Read()ありXElement.ReadFrom(reader)、同じ反復で 1 つおきの要素がスキップされます。上記のリンクに記載されているループを修正すると、それが解決されます。問題は とは何の関係もありませんXmlReaderSettings
  2. xelement.ToString(SaveOptions.DisableFormatting)きれいな書式設定を削除します。
0 投票する
2 に答える
1066 参照

c# - これらのC#Xm​​lユニットテストで2番目のテストに合格するにはどうすればよいですか?XmlReaderSettingsの初期化で何が欠けていますか?

問題の説明:

  • 標準のHTMLエンティティの解決に関する問題を修正する必要があります。
  • 私はHtmlEntityReaderを実装しました-エンティティを解決するためのコードを持つXmlReaderの実装
  • システムのパブリックAPIは、XmlReaderを使用するメソッドを提供するため、ユーザーはXmlReader.Createメソッドの1つを使用して作成されたXmlReaderを渡すことができます。

私のxmlユニットテストの現在のコードは以下のとおりです。

HtmlEntityReaderの部分的なコードは以下のとおりです。

例外があります:

私が自分の努力でこの問題を修正/調査/検索している間、簡単なアドバイスや解決策へのリンクを提供できますか?

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

c# - XmlReader.GetAttribute() が値を返さないのはなぜですか?

XML を C# で解析しようとしています。

関連するファイルの一部を次に示します。

これを読み取るコードは次のとおりです。

よくある間違いは、要素が開始要素であるかどうかを確認するチェックを忘れることであると読んだことがあります。追加しましたが、GetAttribute はまだ null を返します。何か案が?

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

php - XMLReader、DOM、Xpathを使用して、特定のノードのタグ名と値を取得します

xmlドキュメントをクエリしてから、特定のタグ値(forename、surname、group(dept)、job_titleなど)を表示する必要があります。

大きなXMLファイルを処理する必要がある場合があるため、XMLReaderを使用しています。DomXPathを使用してデータをフィルタリングしていますが、各要素のnodeNameとvalueを取得する方法がわかりません。以下のコードは、ノード名として「member」のみを返しますか?

どんな助けでもいただければ幸いです。

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

c# - XmlReader が名前空間 uris を各要素に追加するのはなぜですか?

C# オブジェクトに逆シリアル化したい次の形式の xml を含むストリームがあります。

私はこれを文字列で何度も実行しましたが、ストリームでは、名前空間属性をすべての複雑な要素に親切に追加しています。xmlns 属性を削除しただけで、スキーマに対する検証を忘れると、空の xmlns 属性が追加されるだけです。私が抱えている問題は、XmlSerializer (?) の Deserialize メソッドが、属性を想定していないというエラーをスローすることです。クラスを XmlRoot 属性と XmlType 属性で装飾しようとしましたが、何も変わりませんでした。

これが私がデシリアライズしたいクラスです

作業を行うために使用されている方法は次のとおりです

私は DataContractSerializer を使用してこれを試しましたが、それは学習する独自の機会をもたらします。そのため、XmlSerializer を機能させるために属性に入れるべきものを誰かが助けることができれば、それは素晴らしいことです.

どんな助けでも感謝します、ありがとう。

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

c# - Twitter RSS onloadを検索するコントロールを出力キャッシュする必要がありますか?

大ヒットしたサイトのいくつかのページで紹介されているユーザーコントロールがあります。これらのページの一部には、ブログサイドバー、フォーラムサイドバー、およびホームページの真ん中にあるスマックが含まれます。つまり、このコントロールは多くレンダリングされます。特定のアカウントのTwitterRSSフィードを読み取り、最後の2つのツイートを書き出すためのコントロール。以下は、コントロールのPage_Loadの大部分です。try {} catch本番環境ではサイトがXMLを頻繁にロードできないように思われるため、私はそれを持っています。そのため、わかりやすいエラーメッセージを表示する必要があります。

ご覧のとおり、最新の2つのアイテムを取得し、フロントエンドのリピーターでそれらを繰り返します。何かが失敗した場合は、「Twitterは利用できません」などのエラーPlaceHolderをオンにします。

このエラーメッセージはprodサイトでよく見られるので、RSSフィードへのリクエストが多すぎるのではないかと思います。コントロールを10分間キャッシュする出力を考えていましたが、「エラー状態でキャッシュされるとどうなるか」と思いました。その後、10分間エラーメッセージパネルが表示されることが保証されています。私の質問は、新しくキャッシュされたバージョンを作成するときにキャッチからのエラーが表示された場合、それは本当に10分間キャッシュされるのでしょうか(私が設定したと仮定してDuration="600")?エラーメッセージではなく、実際のTwitterデータのみがレンダリングされたときに、これをより適切に機能させたり、キャッシュしたりするためのヒントはありますか?

前もって感謝します

0 投票する
7 に答える
350263 参照

c# - Reading Xml with XmlReader in C#

I'm trying to read the following Xml document as fast as I can and let additional classes manage the reading of each sub block.

However, I'm trying to use the XmlReader object to read each Account and subsequently the "StatementsAvailable". Do you suggest using XmlReader.Read and check each element and handle it?

I've thought of seperating my classes to handle each node properly. So theres an AccountBase class that accepts a XmlReader instance that reads the NameOfKin and several other properties about the account. Then I was wanting to interate through the Statements and let another class fill itself out about the Statement (and subsequently add it to an IList).

Thus far I have the "per class" part done by doing XmlReader.ReadElementString() but I can't workout how to tell the pointer to move to the StatementsAvailable element and let me iterate through them and let another class read each of those proeprties.

Sounds easy!

0 投票する
4 に答える
917 参照

c# - XML / C#:属性が正しい場合にのみコンテンツを読み取る

次のようなXMLファイルがあり、Recordタグの属性が必要な場合にのみ、Nameタグのコンテンツを読み取ろうとしています。(以下のコードに続く)

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

これは私がこれまでに持っているC#コードです:

したがって、たとえば、2が関数に渡された場合、文字列を返すようにします"Jane Doe"。私はXML解析に慣れていないので、助けていただければ幸いです。

ありがとう。

0 投票する
4 に答える
3120 参照

php - PHP XMLReader を使用した XML の解析

$_POST 変数から XML を読み取り、PHP XMLReader を使用して解析し、抽出されたデータをデータベースに入力するプログラムを作成しています。提供される XML は大きすぎてメモリに配置できない可能性が高いため、XMLReader を使用しています。

ただし、いくつかの問題があります。XML と基本的なコードは次のとおりです。

'<?xml version="1.0"?> <data_root> <data> <info>value</info> </data> <action>value</action> </data_root>'

私の問題は、渡される XML に行がない場合、コードが完全に機能することですが<?xml version="1.0"?>、それを含めると、アプリケーションが実際の運用環境に入ったときに含まれ$reader->read()、while ループのコードが機能しません。 XML は while ループ内で解析されません。

以前に同様の動作を見たことがありますか、またはなぜこれが起こっているのか知っていますか?

前もって感謝します。

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

php - PHP の XMLReader を使用して、現在のノードの行番号を取得するにはどうすればよいですか?

PHP 5.3 で XMLReader XML パーサーを使用して、現在のノードの行番号を取得する必要があります。ファイルの先頭からの列番号または合計オフセットもいいでしょう。

うまくいけば、改行のすべての生のノード文字列を解析するようなハックを使用する必要はありませんが (を使用)、 DOM のようなプロパティreadOuterXML()は表示されません...getLineNo()