我正在尝试使用存在于网络驱动器上的Java解析XML文件...我在这里查看了很多XML解析信息,但找不到我需要的答案...问题是getDocument()例程即使解析器获得准确的位置和文件名,也会不断返回空值。
这是代码......
String ThisXMLFile = XMLFileData.getPath();
DOMParser myXMLParser = new DOMParser();
myXMLParser.parse(ThisXMLFile);
Document doc = myXMLParser.getDocument();
一些注意事项:
我不得不使用getPath(),因为getName()函数没有返回完全限定的文件名和路径 - XML文件存在于网络目录中,并且该目录在我的PC上映射到'V'驱动器< / p>
我已经为DOM对象导入了所有必需的类头文件
上面给出的变量名是真实准确的,所以如果我在变量声明中无意中使用了保留关键字,那么请提供更正。
我有几种语言的丰富编程经验,但这是我的第一个真正的Java应用程序。
所有代码行和上面的变量都有效,直到我到达最后一行,然后getDocument()只将doc变量设置为null ...这使得程序的其余部分中断。
答案 0 :(得分:0)
我相信你的方法是错误的...根据你的代码,当你需要打电话时,你正在执行:DOMParser.parse(systemId)
:DOMParser.parse(InputSource)
...
创建一个InputSource,你可以这样做:
InputSource source = new InputSource(new FileInputStream(ThisXMLFile));
myXMLParser.parse(source);
Document doc = myXMLParser.getDocument();
注意:记得关闭打开的FileInputStream !!!
答案 1 :(得分:0)
XMLInputFactory XMLFactory = XMLInputFactory.newInstance();
XMLStreamReader XMLReader = XMLFactory.createXMLStreamReader(myXMLStream);
while(XMLReader.hasNext())
{
if (XMLReader.getEventType() == XMLStreamReader.START_ELEMENT)
{
String XMLTag = XMLReader.getLocalName();
if(XMLTag.equals("value"))
{
String idValue = XMLReader.getAttributeValue(null, "id");
if (idValue.equals(ElementName))
{
System.out.println(idValue);
XMLReader.nextTag();
System.out.println(XMLReader.getElementText());
}
}
}
XMLReader.next();
}
&#13;
所以这是我最终得到的代码......它可以解决从XML文件中检索特定XML数据的问题。我首先想要使用节点列表,元素,文档等,但这些功能从来没有对我有用......这个功能 - 感谢所有人给出的答案,因为他们帮助我思考这个... ...