私はこのxmlファイルを持っています
<Cdtr>
<Nm>DEF Electronics</Nm>
<PstlAdr>
<AdrLine>Corn Exchange 5th Floor</AdrLine>
<AdrLine>Mark Lane 55</AdrLine>
<AdrLine>EC3R7NE London</AdrLine>
<AdrLine>GB</AdrLine>
</PstlAdr>
</Cdtr>
Javaでdomパーサーを使用して、xmlを解析し、リーフタグ名(値を持つ)とそれぞれの値を取得しようとしています。以下は、私がそのために使用しているコードです。
public class GetNodeValues {
public static void main(String[] args) {
try {
String xmlFile = "C:/Users/Administrator/workspace/sample.xml";
File file = new File(xmlFile);
if(file.exists()){
// Create a factory
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
// Use the factory to create a builder
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(xmlFile);
doc.getDocumentElement().normalize();
// Get a list of all elements in the document
NodeList list = doc.getElementsByTagName("*");
System.out.println("XML Elements: ");
for (int i=0; i<list.getLength(); i++) {
// Get element
Element element = (Element)list.item(i);
String nodnam = element.getNodeName();
NodeList nl = doc.getElementsByTagName(nodnam);
Element ele = (Element) nl.item(0);
if (ele.getChildNodes().getLength() > 0) // then it has text
String val = ele.getChildNodes().item(0).getNodeValue();
if (val.startsWith("\n")) { //Discarding pseudo nodes
}else {
System.out.println("Node: "+nodnam+" | Val: "+val); //print node names and values
}
}
}
}
else{
System.out.print("File not found!");
}
}
catch (Exception e) {
System.exit(1);
}
}
}
私は次の結果を得ています。
Node: AdrLine | Val: Corn Exchange 5th Floor
Node: AdrLine | Val: Corn Exchange 5th Floor
Node: AdrLine | Val: Corn Exchange 5th Floor
Node: AdrLine | Val: Corn Exchange 5th Floor
助けてください。タグ値を繰り返す理由がわかりません。期待される出力は
Node: AdrLine | Val: Corn Exchange 5th Floor
Node: AdrLine | Val: Mark Lane 55
Node: AdrLine | Val: EC3R7NE London
Node: AdrLine | Val: GB