Can';t在Java中解析web.xml文件
我试图使用Can';t在Java中解析web.xml文件,java,xml,tomcat,xml-parsing,Java,Xml,Tomcat,Xml Parsing,我试图使用org.apache.tomcat.util.descriptor.web.WebXmlParser解析Java中的web.xml文件,但我不明白 程序非常简单: public WebXml read() { WebXml webXml = new WebXml(); WebXmlParser parser = new WebXmlParser(false, true, true); try (InputStream is = Reader.class.ge
org.apache.tomcat.util.descriptor.web.WebXmlParser
解析Java中的web.xml文件,但我不明白
程序非常简单:
public WebXml read() {
WebXml webXml = new WebXml();
WebXmlParser parser = new WebXmlParser(false, true, true);
try (InputStream is = Reader.class.getResourceAsStream("/web.xml")) {
boolean success = parser.parseWebXml(new InputSource(is), webXml, false);
if (!success) {
throw new IllegalStateException("Error parsing");
}
} catch (IOException e) {
throw new IllegalStateException("Error reading", e);
}
return webXml;
}
web.xml位于项目的根目录中,它定义了一个servlet:
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<servlet>
<servlet-name>demoServlet</servlet-name>
<servlet-class>com.demo.DemoServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>demoServlet</servlet-name>
<url-pattern>/demo</url-pattern>
</servlet-mapping>
</web-app>
我不理解这个错误,因为web.xml是如何正确编写的
我准备了一个示例项目来显示错误:
如果您能帮我纠正这个错误,我将不胜感激
提前谢谢 如果要计算servlet或任何标记的数量,可以使用以下方法:
public static void main(String[] args) throws SAXException, IOException, ParserConfigurationException {
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
Document doc = null;
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
doc = docBuilder.parse("D:\\ECLIPSE-WORKSPACE\\demo-xml-parser\\src\\main\\resources\\web.xml"); // path of your testNgXml
NodeList parameterNodes = doc.getElementsByTagName("servlet");
System.out.println(parameterNodes.getLength());
}
我有你的项目,并试图调试的问题,在同一时间你可以使用上述方法。
如果不是您想要的,请不要介意。这只是一个建议。如果您想计算servlet或任何标记的数量,可以使用以下方法:
public static void main(String[] args) throws SAXException, IOException, ParserConfigurationException {
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
Document doc = null;
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
doc = docBuilder.parse("D:\\ECLIPSE-WORKSPACE\\demo-xml-parser\\src\\main\\resources\\web.xml"); // path of your testNgXml
NodeList parameterNodes = doc.getElementsByTagName("servlet");
System.out.println(parameterNodes.getLength());
}
我有你的项目,并试图调试的问题,在同一时间你可以使用上述方法。
如果不是您想要的,请不要介意。这只是一个建议。对我来说,它与禁用的验证一起工作
WebXmlParser parser = new WebXmlParser(false, false, true);
对我来说,它与禁用的验证一起工作
WebXmlParser parser = new WebXmlParser(false, false, true);
您是否检查了
web.xml
是否包含在存档中?是的,包含web.xml
文件是否检查了web.xml
是否包含在存档中?是的,包含web.xml
文件谢谢您的建议,但我想解析整个web.xml
文件。我曾考虑使用DocumentBuilderFactory
开发一个解析器,但在此之前,我想再次尝试Tomcat的WebXmlParser
。感谢您的建议,但我想解析整个web.xml
文件。我曾考虑过使用DocumentBuilderFactory
开发解析器,但在此之前,我想再次尝试Tomcat的WebXmlParser
。感谢您的更新。我也对问题所在感到困惑。很好的解决方案,谢谢。我试过你的改变,正如你所说,它是有效的。问题是我的github项目是一个隔离问题的演示。实际上,在我的实际项目中,我试图读取web-INF中的web.xml,尽管禁用了验证,但它还是失败了,并出现了另一个错误。正在将web.xml移到类路径根目录下,它可以正常工作。。。我想知道为什么我不能阅读web-INF中的web.xml。我接受你的回答,因为你已经解决了我原来的问题。谢谢谢谢你的更新。我也对问题所在感到困惑。很好的解决方案,谢谢。我试过你的改变,正如你所说,它是有效的。问题是我的github项目是一个隔离问题的演示。实际上,在我的实际项目中,我试图读取web-INF中的web.xml,尽管禁用了验证,但它还是失败了,并出现了另一个错误。正在将web.xml移到类路径根目录下,它可以正常工作。。。我想知道为什么我不能阅读web-INF中的web.xml。我接受你的回答,因为你已经解决了我原来的问题。谢谢