getDocument()不断返回空值

时间:2016-09-15 17:37:34

标签: java xml xml-parsing

我正在尝试使用存在于网络驱动器上的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 ...这使得程序的其余部分中断。

2 个答案:

答案 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)

&#13;
&#13;
            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;
&#13;
&#13;

所以这是我最终得到的代码......它可以解决从XML文件中检索特定XML数据的问题。我首先想要使用节点列表,元素,文档等,但这些功能从来没有对我有用......这个功能 - 感谢所有人给出的答案,因为他们帮助我思考这个... ...