0

我正在尝试使用以下程序解析 xml 文件,但想知道为什么getFirstChild()打印时为空白...

nodelist包含所有节点,employee我正在处理每个节点并尝试获取firstchildand lastchild..

xml文件:

<?xml version="1.0"?>
<Employees>
    <Employee emplid="1111" type="admin">
        <firstname>John</firstname>
        <lastname>Watson</lastname>
        <age>30</age>
        <email>johnwatson@sh.com</email>
    </Employee>
    <Employee emplid="2222" type="admin">
        <firstname>Sherlock</firstname>
        <lastname>Homes</lastname>
        <age>32</age>
        <email>sherlock@sh.com</email>
    </Employee>
</Employees>

java程序:

package XML;


import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import org.w3c.dom.Node;
import org.w3c.dom.Element;
import org.xml.sax.SAXException;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class XMLTest {

    /**
     * @param args
     */
    public static void main(String[] args) {


        DocumentBuilderFactory builderfactory = DocumentBuilderFactory.newInstance();
        try {
            DocumentBuilder builder = builderfactory.newDocumentBuilder();
            Document xmldocument = builder.parse(new FileInputStream(new File("c:/employees.xml")));
            NodeList node = xmldocument.getElementsByTagName("Employee");
            System.out.println("node length="+node.getLength());
            for (int temp = 0; temp < node.getLength(); temp++){
                System.out.println("First Child = " +node.item(temp).getFirstChild().getNodeValue());
                System.out.println("Last Child = " +node.item(temp).getLastChild().getNodeValue());
            }
        } catch (ParserConfigurationException | SAXException | IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }




    }

}
4

2 回答 2

1

这很可能是由于列表中的文本节点以及元素中出现的空白(空格、制表符、换行符等)。

使用 java 的 XML DOM 时,我倾向于编写这样的帮助程序,因为它非常乏味。

于 2013-10-24T00:59:23.940 回答
0

DocumentBuilderFactory 控制空格的处理尝试:

builderFactory.setIgnoringElementContentWhitespace(true);

希望能帮助到你!

于 2013-10-24T06:04:36.693 回答