【问题标题】:Having problems reading an XML file in Java and getting Element attributes在 Java 中读取 XML 文件和获取元素属性时遇到问题
【发布时间】:2012-04-18 03:51:28
【问题描述】:

我的目标是读取 XML 文件并提供一个简单的界面,使(非技术)用户能够修改此文件。该 xml 文件驱动一个 Flash 照片库,并由该 Flash Actionscript 预定义。

XML 示例

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<photostack3d>
    <photos>
        <photo>
            <thumb src="Thumbs/bed1.jpg"/>
            <img src="Photos/bed1.jpg"/>
            <caption text="Master Bedroom"/>
            <desc><![CDATA[<h1>Master Bedroom</h1><br>The master bedroom is roomy and has a beautiful view of the landscaped back yard.]]></desc>
        </photo>
    </photos>
</photostack3d>

在这个 XML 中,可以有多个照片节点,因为它们定义了画廊将显示的每张照片...

现在,我正处于使用 DOM 创建文件的阶段,所以一切顺利。使用 DOM 尝试将其读入以进行进一步编辑是我遇到问题的地方。我可以访问所有照片元素,但在获取其中的属性时遇到问题,即拇指、img、标题和描述。目前,我有以下内容:

private void loadXML(String filePath)
{
    try 
    {
        File fXmlFile = new File(filePath);
        DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
        Document doc = dBuilder.parse(fXmlFile);
        doc.getDocumentElement().normalize();

        System.out.println("Root element :" + doc.getDocumentElement().getNodeName());
        NodeList photosList = doc.getElementsByTagName("photos");
        System.out.println("-----------------------");

        NodeList photoList = doc.getElementsByTagName("photo");
        System.out.println("Number of photo nodes: " + photoList.getLength());

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

            NodeList thumbList = doc.getElementsByTagName("thumb");
            Element thumbElement = (Element) thumbList.item(0);

            String thumbName = thumbElement.getAttribute("thumb");
            System.out.println("thumb name: " + thumbName);

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

            //  Element eElement = (Element) nNode;

            //  System.out.println("Source Name : " + eElement.getAttribute("text"));     //.getElementsByTagName("thumb"));
                //System.out.println("Source Name : " + getTagValue("thumb", eElement));
                System.out.println("-----------------------");
            //}
        }
    } 
    catch (Exception e) 
    {
        e.printStackTrace();
}

}

如您所见,我一直在尝试各种不同的方法来获取这些属性,但到目前为止,还没有看到值回来。我哪里错了?

【问题讨论】:

  • thumb、img 等是元素。 src 是 thumb 元素/img 元素的属性..

标签: java xml dom


【解决方案1】:

你试过thumbElement.getAttribute("src");吗?

【讨论】:

  • 怎么会这么明显...我知道我曾经尝试过 getAttribute("src"),但它可能在错误的元素上。啊。昨晚已经很晚了,我认为挫败感正在开始。感谢您指出显而易见的事情并让我直截了当!!!
猜你喜欢
  • 2013-04-10
  • 1970-01-01
  • 2014-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-06
  • 2012-09-28
相关资源
最近更新 更多