当我的程序尝试从XML配置文件中读取时,我收到以下错误:
org.xml.sax.SAXParseException; systemId:file:/home/sara/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/PoseidonWebserviceWAR_v12/config.xml; lineNumber:74; columnNumber:20; XML文档结构必须在同一实体内开始和结束。
经过一番阅读后,我相当肯定这是因为解析器正在截断我的XML文件,导致程序认为我没有格式良好的XML。但是,我在调试这个问题时遇到了重大损失,因为我不熟悉我正在制作的网络项目。
另一个奇怪的是:我的网络项目已经运行好几周了,现在很好,但现在我突然得到这个错误?谁能解释一下呢?
以下代码来自我定义XML读/写操作的类:
DocumentBuilder builder;
Document doc;
...
public XMLReader(String filePath){
try {
String f = filePath;
xmlFile = new File(filePath);
builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
doc = builder.parse(xmlFile);
...在另一个类中,我想将元素“LastCurrentState”设置为1234,但由于XML文件被截断,我的阅读器无法读取文件,这里错误是抛出错误的位置:
XMLReader xmlread = new XMLReader(filepath);
xmlread.setNameofNode(0, "LastCurrentState", 1234);
同样,这些方法已经工作了一段时间,但现在突然间文件被截断了。可能导致这种情况的原因是什么?
---- UPDATE ----这是我的XML文件代码..
<?xml version="1.0" encoding="UTF-8"?>
<Config>
<Sources>
<Source>
<Number>1</Number>
<Name>Dish1</Name>
</Source>
<Source>
<Number>2</Number>
<Name>Dish2</Name>
</Source>
<Source>
<Number>3</Number>
<Name>Sky1</Name>
</Source>
<Source>
<Number>4</Number>
<Name>Sky2</Name>
</Source>
<Source>
<Number>5</Number>
<Name>Sky3</Name>
</Source>
<Source>
<Number>6</Number>
<Name>Sky4</Name>
</Source>
<Source>
<Number>7</Number>
<Name>Source7</Name>
</Source>
<Source>
<Number>8</Number>
<Name>Source8</Name>
</Source>
</Sources>
<Targets>
<Target>
<Number>1</Number>
<Name>Corner - TV1</Name>
</Target>
<Target>
<Number>2</Number>
<Name>Left - TV2</Name>
</Target>
<Target>
<Number>3</Number>
<Name>Main - TV3</Name>
</Target>
<Target>
<Number>4</Number>
<Name>Right - TV4</Name>
</Target>
<Target>
<Number>5</Number>
<Name>Office - TV5</Name>
</Target>
<Target>
<Number>6</Number>
<Name>Bar - TV6</Name>
</Target>
<Target>
<Number>7</Number>
<Name>Outside - TV7</Name>
</Target>
<Target>
<Number>8</Number>
<Name>Downstairs - TV8</Name>
</Target>
</Targets>
<Properties>
<LastCurrentState>EE11111111</LastCurrentState>
<DeviceName>KeyDigitalMSW</DeviceName>
<SerialPortName>/dev/ttyS0</SerialPortName>
</Properties>
答案 0 :(得分:0)
您向我们展示的文件格式不正确。文件末尾没有</Config>
结束标记。添加一个。