問題タブ [xmllint]
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 - XPath スクリプトは入力 1 では機能しませんが、入力 2 では問題なく機能します
さて、問題を説明する方法がよくわかりません。基本的に、XML ファイルを持っています。XML ファイルで文字列を含むノードを検索して、情報を取得しようとしています。
<table>
私の問題は、XML ファイル全体ではなく、関心のあるタグのみを含めると、次のスクリプトが機能することです。これは私が入力 2 と呼んでいるもので、問題なく動作します。
しかし、XML ファイル全体を使用すると機能しません。スクリプトは次のとおりです。
(tidy -asxml input.xml | xmllint --xpath 'descendant-or-self::*[starts-with(text(), "Aktiv tid:")]/following-sibling::*/text()' -) 2>/dev/null
入力された 1 つの XML ファイル (完全な XML ファイル) は次のとおりです。
入力 2 つの XML ファイルは次のとおりです。
したがって、何らかの理由で、この行の前と次の行を含むすべてを削除すると:
<div class='contentcontainer'>
スクリプトは正常に動作します。
これは私には非常に奇妙に思えますが、非常に基本的な問題のように思えます。
だから私の質問は、どうすればこれを修正できますか?
前もって感謝します!
xml - これは本当に有効な xs:decimal ではありませんか?
これがxmllintが私に言っていることです:
有効な場所のデフォルトの数はありますか? このとおり で あ る はず が な い。
更新: xmllint を試してみると、小数点以下 17 桁は有効ですが、18 桁は有効ではありません。
bash - XML データを列形式に抽出する bash スクリプト
複数の文字列出力から xml データを動的に (データが変化して) 列形式に抽出しようとしています。
SQL データベースに対してクエリを実行すると、これらの XML ビットのうち約 100 個がエコーアウトされます。
そして、必要なのは列形式の and です。そして、本質的にホスト名が Hostname-H-A10D と等しい場合、最後の D を一致させ、最初の列を Dev、Q を Test としてマークし、最後に Prod として文字を付けないようにしたいと考えています。したがって、出力は次のようになります -->
私は sed/awk/etc をいじってみましたが、一時的なフラット ファイルを書き出さないと、必要な形式を取得できないだけではありません。xmlstarlet や xmllint などを使用して、これを配列に入れることをお勧めします。もちろん、より良い提案を行うことができます。それが私がここにいる理由です:) ありがとうございます。
xml - XPATH を使用した Linux Bash XMLLINT
今日は、xmllint を適切に使用する方法を学びます。十分にカバーまたは説明されていないようです。単一の言語リソース ファイルを使用して、システム全体を実行する予定です。この言語ファイルから読み取る必要がある bash スクリプトと php ページが混在しています。
現在、xml ファイル en.xml で次の形式を使用しています。
ここで、xml ファイルからデータ値を取得する bash スクリプト行から始める必要があります。たとえば、アイテムDESCRIPTION
からの値を取得したいとしindex.php
ます。
使っていました
機能した別のレイアウトの場合、xml ファイルのレイアウトを変更しているため、特定の要素をターゲットに<item>
して、bash スクリプトでその子要素にドリルダウンする方法がわかりません。
xmllint --xpath
誰かがこの値を取得するための行を手伝ってもらえますか?
xml - XML: 型定義がありません
私はこの [1] XML スキーマを使用して、xmllint で XML ドキュメントを検証しています。
検証は失敗します
metadata.xml の 55 行目:
ただし、私が欲しいもののサンプルドキュメントがあります。ここにあります[2]。
この例をスキーマに対して検証すると、同じ検証エラーが発生します。
私は何が欠けていますか?
xpath - string() 関数を各属性に適用する方法は?
Bash スクリプトでいくつかのハイパー参照を取得する必要があります。
次のコマンドはcurl
、 とを使用して、HTML ページのすべての属性xmllint
を読み取ります。href
しかし、属性の値だけが必要です。属性の値は関数で選択できますstring()
。しかし、それを使用すると、属性のリストの最初の要素のみが取得されます。
string()
関数を各属性に適用するにはどうすればよいですか?
xml - xmllint で Yahoo Weather RSS からタグ「<yweather:condition>」を取得する方法
Yahoo Weather RSS からノードを解析して抽出してみましょう。
URLはこちらhttp://weather.yahooapis.com/forecastrss?w=12602818&u=c
この目的にはxmllintを使用する必要があります。
抽出するノードは次のとおりです。
問題
ナイーブxmllint --xpath "//yweather:condition" the_rss_file_from_yahoo
はエラーで答えました:
名前空間が定義されているという事実に由来する必要があります。しかし、私たちはここで立ち往生しています。
コマンドラインでxmllintを使用してこのノードを取得することは可能ですか? はいの場合、どのように?
編集/回答:質問が重複しているとマークされているため、ワンライナーソリューションを探している私のようなXPath初心者の場合は、1つを使用xmllint filename --xpath "//*[local-name()='condition']"
していた他の質問とは反対に、2つのスラッシュを使用できます(アクセスしていたため)ルートノード)。ただし、これに対処する正式な方法については、元の質問の回答 A) を参照し、XPath クエリで / の代わりに // を使用してください (助けてくれた Tomalek に感謝します)。