2

1つの名前空間に関してのみXMLファイルを解析する必要があります。

「1つの名前空間のみに関して」とは、次のようなドキュメントがある場合を意味します。

<xc:document xmlns:xc="asdasd">
  <asdf>
    <xc:abcd />
  </asdf>
</xc:document>

<asdf></asdf>をテキストとして扱いたいのですが。

このドキュメントの構造は次のようになります。

document
|
|- text (<asdf>)
|- abcd
|- text (</asdf>)

これを達成するための最も簡単な方法は何ですか?

4

2 に答える 2

3

最初に xslt を使用してドキュメントを変換し、テキストとして扱いたいノードが実際にテキストになるようにします。

于 2012-08-29T21:42:00.567 に答える
0

ほとんどすべての XML パーサーは、一重引用符または二重引用符が使用されたか、CDATA セクションが使用されたか、またはタグ内 (タグ間ではない) の空白などの区別を失います。

したがって、 <boy socks="black" ></boy> は <boy socks='black'/> として戻ってくる可能性があります

入力を XML ではないものとして扱いたい場合は、XML 以外のツールに頼る、状況を完全に考え直す必要があります。これは非常に珍しいことです。

注意さえすれば、Perl などのテキスト処理言語ではかなり簡単です。例えば、

perl -p -e 's#<(/?[^:]+[\s>])#\&lt;$1#g'

テキストとして扱いたい < 記号を < に変更することで、大いに役立ちます。代わりは。このアプローチは、(この例のように) 一度に 1 行ずつではなく、Perl でファイル全体を読み取る場合に実際に最も効果的です。

</boy
> like this.

ただし、正規表現ではなく、XML パーサーを使用して XML を解析するのが最善です。したがって、上記のような変更が問題なければ、XSLT でこれを行うのは非常に簡単です。

于 2012-08-30T02:38:46.973 に答える