Я новичок ie до java и затмение. Я пытался загрузить файл XML с помощью properties.loadFrom XML () и попытался прочитать имена свойств. но я закончил с получением SAXparseException, говоря «тип элемента должен быть объявлен», хотя я определил DTD для моего XML файла. Может ли кто-нибудь помочь мне? это мой XML файл
<?xml version="1.0"?>
<!DOCTYPE test [
<!ELEMENT test (name, price, hsn)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT price (#PCDATA)>
<!ELEMENT hsn (#PCDATA)>
]>
<test>
<name>groundnut</name>
<price>5.00</price>
<hsn>ABCDE</hsn>
</test>
это мой java код: import java .util.Properties; import java .util.Set;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import java.io.File;
import java.io.IOException;
import org.xml.sax.SAXParseException;
import org.xml.sax.helpers.DefaultHandler;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import org.w3c.dom.Node;
import org.w3c.dom.Element;
import java.io.File;
import java.io.*;
public class test
{
public static void main(String args[]) throws Exception
{
Properties p = new Properties();
InputStream is = new FileInputStream("resources/test.XML");
p.loadFromXML(is);
System.out.print(p.stringPropertyNames());
}
}
это вывод, который я получил:
Exception in thread "main" java.util.InvalidPropertiesFormatException: jdk.internal.org.xml.sax.SAXParseException; Element type "test" must be declared.
at java.base/jdk.internal.util.xml.PropertiesDefaultHandler.load(PropertiesDefaultHandler.java:85)
at java.base/java.util.Properties.loadFromXML(Properties.java:956)
at test.main(test.java:28)
Причина: jdk.internal.org. xml .sax.SAXParseException ; Тип элемента «тест» должен быть объявлен. в java .base / jdk.internal.util. xml .PropertiesDefaultHandler.startElement (PropertiesDefaultHandler. java: 169) в java .base / jdk.internal.util. xml .impl.ParserSAX. parse (ParserSAX. java: 470) на java .base / jdk.internal.util. xml .impl.ParserSAX.parse (ParserSAX. java: 411) на java .base / jdk. internal.util. xml .impl.ParserSAX.parse (ParserSAX. java: 374) в java .base / jdk.internal.util. xml .impl.SAXParserImpl.parse (SAXParserImpl. java : 97) в java .base / jdk.internal.util. xml .PropertiesDefaultHandler.load (PropertiesDefaultHandler. java: 83) ... еще 2