2016-06-15 22 views
0

テキストコンテンツとしてXMLタグを読むXML解析は、私は、XMLファイルのこのサンプルを持って

pはセルの内容です..しかし、時々私は、コンテンツのXMLタグの内側に配置する必要があると
<Cells> 

      <Cell row="1" column="1">p</Cell>  
<Cells> 

私はそれらをxmlタグではなくシンプルテキストとして読んでいきたいと思っています。

<Cells> 
    <Cell row="1" column="1">p</Cell> 
    <Cell row="2" column="2"><Cell></Cell> 
    <Cell row="3" column="3"></Cell></Cell> 
<Cells> 

どうすればいいですか?このXMLを読み込むには、私はそのようなものを使用します。

doc.getDocumentElement().normalize(); 


      NodeList nList = doc.getElementsByTagName("Cell"); 

      cell = new String[nList.getLength()][4]; 

      for (int temp = 0; temp < nList.getLength(); temp++) { 

       Node nNode = nList.item(temp); 

       if (nNode.getNodeType() == Node.ELEMENT_NODE) { 

        Element eElement = (Element) nNode; 
         cell[temp][1] = eElement.getAttribute("row"); 
         cell[temp][2] = eElement.getAttribute("column"); 
         cell[temp][3] = eElement.getTextContent(); 

       } 
      } 

ので<セル> .... < /セル内部<セル>または< /セルを>読んでどのような方法がある>コンテンツとしてとXMLタグとしてではないのですか?

ありがとうございました!

+0

「CDATA」を使用できます。 –

+0

しかし、私はcan not変更xml ...私はCDATAは、私が間違っているXMLでdirecly cdataを書く場合にのみ動作すると思いますか? – Joseph

+0

もちろん、XMLでタグを書き込むには、CDATAを使用する必要があります。それ以外の場合は、整形式のXMLにはなりません。 –

答えて

1

Java XMLパーサーを使用する場合は、入力が整形式のXMLであることが必要です。これは、メモリ内文書がノードと属性(および他のいくつかのもの)で構成され、入力テキストストリームに似ていないタグではないためです。

テキストストリームは、 XML文書として知られている抽象的な「物」のシリアル化されたバージョンです。 DOMに解析されると、シリアライズされたファイルでどのように見えるかの詳細がなくなり、残りは意味構造と内容です。 「タグ」(開始または終了)はありません。それらは意味内容ではなく、シリアライゼーションの成果物です。

シリアル化されたバージョンでサブツリーを処理する必要がある場合は、タグイベントを処理しシリアル化されたテキストを維持するカスタムSAX(イベント駆動型)パーサーを作成できますが、それはやや複雑です。また、シリアル化された形式で必要な部分でサブツリーを再シリアル化することもできます。これはまた「面白い」だろう。

整形式ではない(つまり、終了タグがないか、または他の構文エラーがある)XMLを処理する必要がある場合は、標準パーサーをまったく使用できません。ドキュメントを解析して例外をスローするのに失敗します。

要するに、JavaベースのXMLパーサーの範囲外であり、多くの作業を必要としない良い答えはありません。

+0

その真実!私はそのxmlを保存しようとしていたときに、xmlがフォーマットされていないというメッセージエラーを表示しました。私はクライアントに再度話をし、より良いフィードバックを受け取ってから作業しようとします!ありがとう@ジム・ギャリソン – Joseph