問題タブ [xml-entities]
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.
php - デコードされたエンティティを含む SimpleXML
PHPでSimpleXMLを作成して、HTML/XMLエンティティをそれぞれの文字に置き換えるにはどうすればよいですか?
次の XML ドキュメントが文字列になっているとします。
明らかに、SimpleXml を にデコードする&
必要があり&
ます。デフォルトでは行いません。私はこれらの2つの方法を試しましたが、どちらもうまくいきませんでした:
XML エンティティをデコードする最良の方法は何ですか? XMLパーサーがそれを行うべきだと思います.解析html_entity_decode
前に実行することは避けたいです(実際、どちらも機能しません)。これは文字列のエンコーディングに問題があるのでしょうか? もしそうなら、どうすればそれを追跡して修正できますか?
xml - XmlParser が文字の 16 進コード文字列を Unicode に変換するのはなぜですか?
私の Grails アプリケーションでは、Groovy のXmlParserを使用して XML ファイルを解析しています。私の XML ファイルの属性の 1 つの値は、文字の 16 進コードに等しい文字列です。その文字列をデータベースに保存したい:
Ñ
残念ながら、属性メソッドはÑ文字を返し、実際にデータベースに格納されるのは ですc391
。フィールドが読み戻されると、望ましくないÑ文字も取得されます。
データベースに 16 進コードを文字列として保存し、16 進コードとして読み戻されるようにするにはどうすればよいですか?
更新 #1:
これが私にとって問題である理由は、XML ファイルをデータベースに読み取った後、それを元どおりに再構築できなければならないからです。追加の問題は、問題のフィールドが常に文字の 16 進コードであるとは限らないことです。任意の文字列である可能性があります。
更新 #2:
拡張された 16 進コード形式で文字を書き戻すことができる限り、文字がデータベースにどのように格納されているかは問題ではないと思います。Groovy MarkupBuilderを使用してデータベースから XML ファイルを再構築していますが、デフォルトでこれが行われない理由がわかりません。
更新 #3:
カスタムの MySQL ダイアレクトを上書きgetTableTypeString
しましたが、それが何かの助けになったようです。少なくとも、MySQL に渡す値は、データベースに格納される値です。
独自のバージョンのgroovy.util.XmlParserも作成しました。私のバージョンは、私が変更した方法をgroovy.util.XmlParser
除いて、ほぼ正確に複製されています。startElement
これに:
これにより、16 進コード要素の正確なテキストをデータベースに格納できます。
現在、2 つ、おそらく 3 つの新しい問題があります。
データベースに保存されている正確な値でファイルを再作成します。これまでは を使用していましたが
MarkupBuilder
、アンパサンドで余分なエンコーディングを行っているため、XML 文字列を手動で 破棄して構築することでおそらくこれを回避できるため、値Ñ
が書き出されてしまいますが、むしろそうしたくありません。Ñ
MarkupBuilder
Saxon-HE 9.4 プロセッサを使用して XML ファイルに対して XSLT 変換を実行すると、一部の 16 進コード値がÿ
ÿ
のような値に変更されますが、その他の値は変更されません。™
これが問題になるかどうかはまだわかりませんが、ファイルを再作成するときは
ANSI
、元のファイルに使用されているエンコーディングであるため、エンコーディングにしたいと考えています。
java - JavaでXHTMLおよび/またはHTML5エンティティをデコードするには?
XHTML文字エンティティを含む文字列がいくつかあります。
エンティティをデコードする簡単な方法はありますか? (私は Java を使用しています)
私は現在StringEscapeUtils.unescapeHtml4(myString.replace("'", "\'"))
、一時的なハックとして使用しています。悲しいことに、 と はありますが、org.apache.commons.lang3.StringEscapeUtils
はunescapeHtml4
ありunescapeXML
ませんunescapeXhtml
。
編集:無効な XML を処理したい、たとえば、「&&xyzzy;」が必要です。「&&xyzzy」にデコードする
編集: HTML5 には XHTML とほぼ同じ文字エンティティがあると思うので、HTML 5デコーダーも問題ないと思います。
php - XML エンコード文字のエスケープ解除
こんにちは、STD xml の代わりに次のような応答がありました。PHPを使用してXMLに変換するにはどうすればよいですか..
ありがとう、マンゲッシュ
java - Java 文字列を 3.0 を超えるバージョンの Unicode の xml エンティティに変換するにはどうすればよいですか?
Java 文字を xml エンティティに変換するには、文字列内の各文字に対して次の操作を実行できます。
ただし、他のスタックオーバーフローの質問によると、これは Unicode 3.0 でのみ機能します。
UTF-8 リーダーを使用して文字列を読み取る場合、文字列には Unicode 6.0 で動作する形式の文字が含まれていると考えられます (javadoc に従って Java 7 が Unicode 6.0 をサポートしているため)。
その文字列を取得したら、どうすればそれを xml エンティティとして書き出すことができますか? 理想的には、Unicode の新しいバージョンが出てきても引き続き機能する API を使用します。