我是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
我做了上面的代码,但我无法找到以上述列和行格式获取数据的方法。请任何人请帮助我解决我的问题,我在过去很多天都在研究它
答案 0 :(得分:1)
因为这看起来像是家庭作业,所以我会给你一些提示:
您的讲师可能会给您一些关于处理XML DOM的讲义和/或示例。再读一遍。
getElementsByTagName
方法将元素名称作为参数。 "*"
不是有效的元素名称,因此调用不会返回任何内容。
您的代码需要镜像XML的结构。在这种情况下,XML结构由N staff
个元素组成,每个元素都包含名为firstname
,lastname
,nickname
和salary
的元素。
您的讲师也可能希望您使用XSLT或XML绑定机制来简化此操作。 (或者也许这个 意图是XMI而不是XML ......其中还有其他方法来处理这个...)
我保留了getElementsByTagName方法参数“*”,因为要动态读取数据。
嗯,它不起作用 !! DOM getElementsByTagName
方法不接受任何类型的模式。
如果您想使代码通用,则无法使用getElementsByTagName
。您需要从顶部开始遍历树,从DOM的根节点开始。
您能否向我提供样本数据。
没有。你的讲师不会赞成我给你复制的代码。但是,我要指出网上有很多XML DOM教程可以帮助你弄清楚你需要做什么。最好的事情是你自己做这项工作。你会从中学到更多......这就是你作业的重点!
答案 1 :(得分:0)
1。 DOM Parser
会解析整个XML file
以创建DOM object
。
2. 在Web服务上触发请求时,您始终需要了解输出的类型和返回的xml结构。
3。并且它不是从Web服务返回的回复的XML结构,它将是动态的,但child elements
值和属性可以是动态的。
4. 您需要使用try/catch block
处理此动态行为...
有关DOM PARSER的更多详细信息,请参阅此站点...