0

SOAP Web サービス呼び出しによって返された XML から HTML 文字列を取得しようとしています。私の Node オブジェクトは次のクラスです。

org.w3c.dom.Node

ノードを通過するために使用するループのコード サンプルを次に示します。

for(int t = 0; t < elements; t++)
{

         Element myElement = (Element)elements.item(t);

         NodeList childNodes = myElement.getChildNodes();
         int numChildren = childNodes.getLength();

         for(int counter = 0; counter < numChildren; counter++)
         {
             Node currentNode = childNodes.item(counter);
             NodeList currentNodeChildNodes = currentNode.getChildNodes();

             int numCurrentNodeChildren = currentNodeChildNodes.getLength();
             Node firstChild = currentNodeChildNodes.item( 0 );
         }
}

現在、これらのノードの一部には生の html が含まれています。もちろん、子供がいるように見えます。これらの html ノードを取得して、そのすべてのコンテンツを直接String. 試しcurrentNode.getTextContent()てみましたが、java.lang.NullPointerException.

子ノードが含まれているかどうかに関係なく、ノードを取得してその生のコンテンツを文字列として取得するために使用できる方法はありますか?

編集: HTML コンテンツを含む XML の例を次に示します。

<?xml version="1.0" encoding="utf-16"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns:xsd="http://www.w3.org/2001/XMLSchema"
      xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <GetInfoResponse xmlns="http://www.mycompany.com/">
      <GetInfoResult>
        <infoList>
          <Info>
            <iso>US</iso>
            <country_name>United States</country_name>
            <title>This is the title</title>
            <html_string><strong>NEWS</strong><h1>This is a section header</h1><p>Here is some information</p></html_string>
            <last_update_date>2013-01-01 00:00:00</last_update_date>
          </Info>
        </infoList>
        <faultResponse>
          <faultOccurred>boolean</faultOccurred>
          <faultDescription>string</faultDescription>
        </faultResponse>
      </GetInfoResult>
    </GetInfoResponse>
  </soap:Body>
</soap:Envelope>
4

1 に答える 1

2

一般に、html と xml のコンテンツを混在させることはお勧めできません。htmlはxml (xhtml) のようにフォーマットできますが、多くの場合そうではありません。2 つを混在させると、html がたまたま有効な xml ではない場合に、将来的に xml の解析エラーが発生するリスクがあります。代わりに、html コンテンツを有効な xml 要素値としてエンコードする必要があります。これを行うと、要素のNode.getTextContent()呼び出しを使用して Java でデータを取得できます。html_string

于 2013-01-03T01:05:54.830 に答える