問題タブ [xml-twig]
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.
xml - XML::Twig オブジェクトのコンテンツの出力
$xmlDef
例として、以下を含むPerl XML::Twig objectがあります。
次のコードで生成されます。
$xmlDef
を使用して表示する$xmlDef->print
と、その内容がコンソールに正しく出力されます。するとprint $xmlDef->text
、何も出力されません。を使用して何が間違ってい->text
ますか?
xml - Perl XML::小枝。巨大なファイルの処理。繰り返しの入力と存在しない入力の処理方法
CSV に変換する必要がある巨大な XML ファイル (約 10 Gb) があります。このファイルには、多数の顧客に関する情報が含まれています。CSV形式に変換する必要があります。問題は、多くの顧客が他の顧客が使用しない余分なフィールドを持ち、一部のフィールドが繰り返されることです。XML の例は次のとおりです。
ご覧のとおり、最初の顧客には auc ブロックが 1 つしかありませんが、2 番目の顧客には 2 つの auc ブロックがあり、さらに、extraBit である auc に余分なタグもあります。今質問:
一度に 1 人の顧客を処理する必要があります (1 人の顧客から /customer へ、など)。10 Gb を一度に処理するとシステムがクラッシュします。
XML TWIG をループで使用しようとしましたが、Customer 1 の extraBit を使用しようとすると、「未定義の値」のためにプログラムが終了します。
print $customer->first_child('extraBit')->text()
xml-tags.pl の 50 行目で未定義の値に対してメソッド "text" を呼び出すことはできません。
顧客の追加の auc 値については、次のように CSV ファイルに出力する必要があります。
customerID,algoId,kdbId,acsub,extraBit,algoId2,kdbId2,acsub2,extraBit2
1,0,1,1,,,,,,
2,0,1,1,1234,2,3,3,67890
xml - XML::Twig を使用して巨大なファイル (>10 GB) を処理する際のパフォーマンスの問題
巨大な XML ファイル (>10 GB) を処理して CSV に変換する必要があります。を使用してXML::Twig
います。
このファイルには、約 260 万人の顧客のデータが含まれており、それぞれに約 100 から 150 のフィールドがあります (顧客のプロファイルによって異なります)。
1 つのサブスクライバーのすべての値を hash に格納し%customer
、処理が完了したら、ハッシュの値を CSV 形式のテキスト ファイルに出力します。
問題はパフォーマンスです。処理には約6~8時間かかります。どのように減らすことができますか?
詳細タグには、ネストされたフィールドを含むいくつかのフィールドが含まれています。そのため、さまざまな種類のフィールドを収集するために毎回関数を呼び出します。
他の関数 *(value2, value3) についても同様です。シンプルにするための他の機能については言及していません。
foreach
問題は次のとおりです。ほとんどの場合、子インスタンスは顧客プロファイル全体で 1 回しか発生しませんが、すべての子に使用します。遅延が発生する可能性がありますか、またはパフォーマンスを改善するための他の提案はありますか? 糸通しなど? (ググったところ、スレッド化はあまり役に立たないことがわかりました。)
xml - XMLTwigは常にXMLを編集します
私はそれを正しく使用していないと確信しています、私のコード:
XMLにそのXPath式に一致する要素がない場合、XMLは空であることが判明したようです...ファイルを切り捨てます。私の望ましい動作は次のとおりです。一致する要素がない場合は、XMLの編集をまったく避けてください。
perl - XML::Twig.pmとXML::Twig.pm.slowは、CPANの内部的な違いですか?
allオプションでXML+Twigを検索すると、Xml::Twigの結果が2つ生成されます。リストでは、それらはXML :: Twigとして示されていますが、リンク自体は、これらの1つに接尾辞.slowが付いている点で異なります。
モジュールに違いはありますか、それともこれはCPAN Area51のようなものですか?
xml - XML Twig は新しく追加された要素をインデントしませんか?
XML の関連部分は次のようになります
私のコード:
問題は、追加された要素が 1 行に表示され、残りの要素のように実際にはインデントされていないことです。私も$tree->print(pretty_print => 'indented')
運が悪かったので試してみました。
xml - XML プロパティ名の値を置き換える方法
次の XML があります。
value1 を別のものに変更する必要があり、これまでに作成できたのは次の Perl スクリプトです。
でも何も変わらない!どんなアイデアでも大歓迎です。
よろしく、ベザド
html - HTML の抽出された部分を新しいドキュメントに簡単にリラップする方法
XML::Twig Perl モジュールを使用して HTML ドキュメントから div を抽出し、この div と必要な HTML ラッピングのみを含む新しい HTML ドキュメントを作成したいと考えています。次に、いくつかの CSS スタイルを新しいドキュメントに追加します。
div を抽出するのは簡単ですが、自分で HTML ラッピングを書くのが面倒です :-)。
そんな退屈な部分をやってくれる Perl モジュールがきっとあるはずです。それとも、XML::Twig 自体のメソッドでさえ、私が見落としたり、理解できなかったりするのでしょうか?
perl - Perl XML::Twig - 属性の中や周りの引用符を保持する
いくつかの要素と属性を選択的に修正しています。残念ながら、入力ファイルには、一重引用符と二重引用符の両方の属性値が含まれています。また、一部の属性値には (値内に) 引用符が含まれています。
XML::Twig を使用すると、属性値の周りに存在する引用符を保持する方法がわかりません。
サンプルコードは次のとおりです。
上記のコードは、label1 に対して無効な XML を返します。
私が追加した場合:
次に、label2 の無効な XML が表示されます。
既存の見積もりを保持するオプションはありますか? または、小枝を選択的に固定するためのより良いアプローチはありますか?
xml - XML::Twig またはその他の XPath 変数
XML::Twig::XPathを使用して ITS データを操作しており、変数を含む XPath 式を解決する方法を見つけようとしています。以下は、ITS仕様で作業する必要があるものの例です。
selector
要素の内容である変数の値を使用して、 に含まれる XPath 式を評価できる必要がありits:param
ます。私はこれを行う方法について途方に暮れています。XML::XPathのドキュメントには、変数 (コンテキストの一部である必要があると思います) が記載されており、それらを表すクラスもありますが、ドキュメントにはコンテキストで変数を指定する方法が記載されていません。可能であれば、XML::Twig からそのような機能にアクセスする方法については、さらに確信が持てません。
誰もこれを行う方法を知っていますか? または、そのような機能を XML::LibXML などの別のモジュールで使用する方法の例を挙げていただけますか (変数については広範囲に言及していますが、文字列である変数でこれを行う方法について少し確信が持てません)。