1

我是 Java 和 XML DOM 解析器的新手。我有一个要求,比如读取 xml 数据并将其存储为列和行类型的通知。示例:sample.xml 文件

<staff>
        <firstname>Swetha</firstname>
        <lastname>EUnis</lastname>
        <nickname>Swetha</nickname>
        <salary>10000</salary>
    </staff>
    <staff>
        <firstname>John</firstname>
        <lastname>MAdiv</lastname>
        <nickname>Jo</nickname>
        <salary>200000</salary>
    </staff>

我需要阅读此 XML 文件并将其以上述格式存储:

firstName,lastName,nickName,Salary
swetha,Eunis,swetha,10000
john,MAdiv,Jo,200000

Java 代码:

NodeList nl= doc.getElementsByTagName("*");

        for(int i=0;i< nl.getLength();i++)
        {
            Element section = (Element) nl.item(i);

             Node title = section.getFirstChild();
              while (title != null && title.getNodeType() != Node.ELEMENT_NODE)
              {
                   title = title.getNextSibling();
                if (title != null)
              {
                String first=title.getFirstChild().getNodeValue().trim();
                    if(first!=null)
                    {
                        title = title.getNextSibling();
                    }
                System.out.print(first + ",");
               } }
              System.out.println("");
        }//for

我做了上面的代码,但我无法找到以上述列和行格式获取数据的方法。任何人都可以请帮我解决我的问题,我从过去很多天都在调查它

4

2 回答 2

1

由于这看起来像家庭作业,我会给你一些提示:

  • 很有可能您的讲师已经为您提供了一些关于处理 XML DOM 的讲义和/或示例。再读一遍。

  • getElementsByTagName方法将元素名称作为参数。 "*"不是有效的元素名称,因此调用不会返回任何内容。

  • 您的代码需要镜像 XML 的结构。本例中的 XML 结构由 N 个staff元素组成,每个元素都包含名为firstnamelastnamenickname的元素salary


您的讲师也可能希望您使用 XSLT 或 XML 绑定机制之类的东西来简化这一点。(或者这可能XMI 而不是 XML ......其中还有其他方法来处理这个......)


我保留了 getElementsByTagName 方法参数“*”,因为要动态读取数据。

好吧,它不起作用!DOMgetElementsByTagName方法不接受任何类型的模式。

如果你想让你的代码通用,你不能使用getElementsByTagName. 您需要从顶部开始遍历树,从 DOM 的根节点开始。

你能给我提供样本数据吗?

不,你的讲师不会同意我给你复制代码。但是,我要指出,网络上有很多 XML DOM 教程,它们应该可以帮助您弄清楚您需要做什么。最好的事情是你自己做这项工作。这样你会学到更多……这就是你作业的重点!

于 2012-07-26T09:36:12.073 回答
0

1.DOM Parser解析整个XML file以创建DOM object.

2.当请求在 web 服务上触发时,您将始终需要了解输出的类型和返回的 xml 结构。

3.它不是从Webservice返回的回复的XML结构,它将是动态的,但child elements值和属性可以是动态的。

4.您需要使用try/catch block...处理这种动态行为

有关 DOM PARSER 的更多详细信息,请参阅此站点...

http://tutorials.jenkov.com/java-xml/dom.html

于 2012-07-26T12:27:47.770 回答