【抜粋】dom 4 jを用いてネーミングスペース付きXMLを解析する
1839 ワード
テキストリンク:https://www.iteye.com/blog/jackiee-cn-2087261
dom 4 jを使用してxmlを解析する際、xmlコンテンツにカスタムネーミングスペースとデフォルトネーミングスペースが同時に含まれる問題に遭遇し、上記のリンクされた文章を拝読するまで、問題がやっと解決され、同じ疑問を持っている同級生にも役立つことを願っています.
xmlの内容は次のとおりです.
このxml自体はSOAPメッセージであるべきであるが,サービスパブリッシャーのためwsクライアントコードを用いて直接アクセスすることはできず,HTTP方式でwsdlにアクセスし,SOAPメッセージを取得した後,wsインタフェースの戻り値,すなわち要素コンテンツを二次解析して取得する.単純に通常のxmlで見ると、このxmlには2つのネーミングスペースがあり、私が取得する要素はデフォルトのネーミングスペースを使用しています.
解析要素のコードは次のとおりです.
dom 4 jを使用してxmlを解析する際、xmlコンテンツにカスタムネーミングスペースとデフォルトネーミングスペースが同時に含まれる問題に遭遇し、上記のリンクされた文章を拝読するまで、問題がやっと解決され、同じ疑問を持っている同級生にも役立つことを願っています.
xmlの内容は次のとおりです.
true
。
このxml自体はSOAPメッセージであるべきであるが,サービスパブリッシャーのためwsクライアントコードを用いて直接アクセスすることはできず,HTTP方式でwsdlにアクセスし,SOAPメッセージを取得した後,wsインタフェースの戻り値,すなわち要素コンテンツを二次解析して取得する.単純に通常のxmlで見ると、このxmlには2つのネーミングスペースがあり、私が取得する要素はデフォルトのネーミングスペースを使用しています.
解析要素のコードは次のとおりです.
//
//......
SAXReader saxReader = new SAXReader();
Document doc = saxReader.read(new ByteArrayInputStream(xml.getBytes()));
// ——
Map map = new HashMap();
map.put("myPre", "http://www.anwr.cn/");
XPath xPath = doc.createXPath("//myPre:retxml");
xPath.setNamespaceURIs(map);
Node node = xPath.selectSingleNode(doc);
String text = node.getText();
//
//......