xml解析器配置文件

时间:2012-06-22 04:06:11

标签: java xml file properties xml-parsing

我正在用java编写一个简单的XML解析器,

请解释我如何从属性文件中读取XML标记名称? 示例:如果有像

这样的XML文件
<parent>
    <child>1</child>
    <child2>2</child2>
</parent>

我想从配置文件中读取标签名称。这是我正在处理的代码,我正在使用test.xml文件来读取数据。

public class xml2 
{
    public void xmlR(File f)
    {
        try
        {
            FileInputStream IF=new FileInputStream(f);
            DataInputStream data=new DataInputStream(IF);
            BufferedReader buf=new BufferedReader(new InputStreamReader(data));
            DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
            DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
            Document doc = dBuilder.parse(f);
            doc.getDocumentElement().normalize();
            NodeList nList = doc.getElementsByTagName("test");

            File file=new File("xml.txt");
            BufferedWriter writer = new BufferedWriter(new FileWriter(file));

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

                Node nNode = nList.item(temp);
                if (nNode.getNodeType() == Node.ELEMENT_NODE) 
                {

                    Element eElement = (Element) nNode;
                    writer.write("ID : " + getTag("id", eElement));
                    writer.newLine();
                    writer.write("Name : " + getTag("Name", eElement));
                    writer.newLine();
                    writer.write("AGE: " + getTag("age", eElement));
                    writer.newLine();
                    writer.flush();
                    writer.write("-----------------------");writer.newLine();
                }
            }
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }

    private static String getTag(String sTag, Element eElement) 
    {
        NodeList nlList = eElement.getElementsByTagName(sTag).item(0).getChildNodes();

        Node nValue = (Node) nlList.item(0);

        return nValue.getNodeValue();
    }

    public static void main(String args[])
    {
        xml2 x=new xml2();
        x.xmlR(new File("test.xml"));
    }
}

1 个答案:

答案 0 :(得分:1)

您尚未显示配置文件,因此无法为您提供工作代码,但通常对于此类XML,最简单的方法是使用格式为{{{{1}的XPath表达式从配置文件中获取每个值。 1}}。

您正在使用DOM,这似乎是XML新手的Java程序员的默认选择。但DOM是陈旧,臃肿和不友好的:人们使用它的唯一原因是它内置于JDK中。有更好的选择,例如JDOM和XOM。