13
ルートノードの子要素を印刷します。これは私のXMLファイルです。ルートノードの子ノードとして余分なテキストノードを取得するのはなぜですか?
<?xml version="1.0"?>
<!-- Hi -->
<company>
<staff id="1001">
<firstname>yong</firstname>
<lastname>mook kim</lastname>
<nickname>mkyong</nickname>
< salary>100000</salary>
</staff>
<staff id="2001">
<firstname>low</firstname>
<lastname>yin fong</lastname>
<nickname>fong fong</nickname>
<salary>200000</salary>
</staff>
</company>
私の理解によると、ルートノードは、「会社とその子ノードが( 'スタッフのノード2回があるので)「スタッフ」と「スタッフ」でなければなりませんです。しかし、私は私のJavaコードを介してそれらを取得しようとしているとき私は5子ノードを取得しています。 3つの余分なテキストノードはどこから来ていますか?
Javaコード:
package com.training.xml;
import java.io.File;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class ReadingXML {
public static void main(String[] args) {
try {
File file=new File("D:\\TestFile.xml");
DocumentBuilderFactory dbFactory=DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder=dbFactory.newDocumentBuilder();
Document document=dBuilder.parse(file);
document.getDocumentElement().normalize();
System.out.println("root element: "+document.getDocumentElement().getNodeName());
Node rootNode=document.getDocumentElement(); //saving root node in a variable.
System.out.println("root: "+rootNode.getNodeName());
NodeList nList=rootNode.getChildNodes(); //to store the child nodes as node list.
for(int i=0;i<nList.getLength();i++)
{
System.out.println("node name: "+nList.item(i).getNodeName());
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
OUTPUT:
root element: company
root: company
node name: #text
node name: staff
node name: #text
node name: staff
node name: #text
なぜ3つのテキストノードがこちらに来ていますか?
ありがとうございます!それは働いた:)もう一つ、それはテキストノードとして改行文字を取っている。改行文字は空白ですか? XMLファイルに改行文字を置く必要があり、改行文字をテキストノードとして表示しているため、子要素だけを取得し、テキストノードを出力する方法はありません。 –
@VikasMangal:はい、改行は空白です。私の答えは要素だけを見るためのコードを含んでいます。 –
ありがとうございました:) –