java - 如何在Dom解析器中修改XML数据

标签 java xml-parsing domparser

我是 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

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

最佳答案

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

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

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

  • 您的代码需要反射(reflect) XML 的结构。本例中的 XML 结构由 N 个 staff 元素组成,每个元素都包含名为 firstnamelastnamenicknamesalary 的元素。

<小时/>

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

<小时/>

I kept getElementsByTagName method parameter "*" because to read the data dynamically.

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

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

Can you please provide me with sample data.

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

关于java - 如何在Dom解析器中修改XML数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11666140/

相关文章:

java - 解析 XML 并将数据设置到 Model 类

java - 函数调用与i+1,++i的实现有区别吗?

java - 如何在正在运行的应用程序中更改 log4j2 模式

java - 如何在 Java 中从 String 创建 XML 对象?

javascript - 循环期间出现 Google Sheet Script Null 错误

php - 保留换行符 - 简单的 HTML DOM 解析器

java - Android 项目中的两个 api key - 一个在开发者控制台上自动生成

java - 我的 BufferedReader 字符输入循环程序永远运行

ios - 通过 Objective-C 代码解析 XML

java - 在存储在 org.w3c.dom.Document 中的给定 XML 文件的根元素周围添加一个元素