21

SOAP 応答から SOAP 本文を取得しようとしましたが、次のエラーが発生しました:

NAMESPACE_ERR: An attempt is made to create or change an object in a way which is incorrect with regard to namespaces.

Document doc = soapResMsg.getSOAPBody().extractContentAsDocument(); -- Exception is thrown here
org.dom4j.io.DOMReader d4Reader = new org.dom4j.io.DOMReader();
org.dom4j.Document d4doc = d4Reader.read(doc);

Saaj1.4 の使用

これに対する修正は何ですか?

4

6 に答える 6

15

DocumentBuilderFactory 名前空間を認識させることでこれを解決しました。

DocumentBuilderFactory.setNamespaceAware(true)
于 2017-01-08T22:59:00.930 に答える
12

私は同じ問題に直面しました。私の場合、サーバー側の問題を修正することはオプションではありませんでした。クライアント側で修正し、Xalan をバージョン 2.7.0 に強制しました。これを参照してください。

于 2012-01-27T16:56:42.570 に答える
11

私はまさにこの問題を抱えており、エラーメッセージが非常に曖昧であるため、修正に半日を費やしました. 問題は SOAP サービスにあります (クライアントの実装ではありません)。クライアントに送信する XML に名前空間の問題があるため、エラーがスローされます。

この記事によると、この問題には 3 つの理由が考えられます。

  1. null 名前空間プレフィックス
  2. 「http://www.w3.org/XML/1998/namespace」の名前空間URIにない「xml」の名前空間プレフィックス
  3. 「http://www.w3.org/2000/xmlns/」の名前空間URIにない「xmlns」の名前空間プレフィックス

私の場合、問題を引き起こしたのは上記の#1でした。名前空間を含む XML を返していませんでした。名前空間(「ns」変数)をルート要素とすべての子ノードに次のように追加して修正しました。

  Namespace ns = Namespace.getNamespace("tns", "http://mycompany.com/schemas");

  Element result = new Element("ResponseType", ns);
  Document doc = new Document(result);

  result.addContent(new Element("StatusCode", ns).setText(code));
  result.addContent(new Element("Message", ns).setText(message));

私のコード例は、人が求めていたDom4jではなく、JDom用であることに注意することが重要です。たまたま使用している XML ライブラリに適したコードを使用する必要があります。

于 2010-11-04T14:49:38.077 に答える
10

フライングソーサーでも同様の問題がありました。jddsantaella からのアドバイスに従って、POM の依存関係を調べました。私が使用していたプロジェクトは Struts を使用しており、カバーの下では、Struts は Xalan 2.5.1 に依存していました。

struts 依存関係セクションの POM に次を追加しました。

<exclusions>
<exclusion>
    <artifactId>xalan</artifactId>
        <groupId>xalan</groupId>
</exclusion>
</exclusions>

Flying Saucer がおやつとして機能するようになりました。

お役に立てれば。

于 2012-06-15T12:30:02.420 に答える
9

spring-wsを使用して同じ問題が発生しました

別のサードパーティ製ライブラリxalan-2.6.0.jarを追加することで、私の war ファイルに追加されました。これは同じことを引き起こしましたNAMESPACE_ERR

spring で提案されxalan-2.7.0.jarているように、代わりに追加してエラーを解決しました。

于 2012-07-12T14:33:03.240 に答える
0

Java 8 と WebLogic 12c で問題が発生しました。

私の場合、WARに追加するのに役立ちましたorg.glassfish.jaxb:jaxb-runtime:2.3.3

注意が必要なのは、アプリケーションが依存関係なしでかなり長い間機能していたことです。しかし、特定のリクエストの何かがこのエラーを引き起こしましたが、それが何であったかはまだわかりません. ただし、新しい依存関係が役立ちました。

于 2020-11-20T06:20:12.487 に答える