【发布时间】:2014-01-31 21:53:31
【问题描述】:
当我的程序尝试从 XML 配置文件中读取时,出现以下错误:
org.xml.sax.SAXParseException; systemId:文件:/home/sara/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/PoseidonWebserviceWAR_v12/config.xml;行号:74;列号: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>
【问题讨论】:
-
你的 xml 是什么样的?
-
XML 编辑器没有抱怨内容吗?
-
这听起来像您的 XML 文件不是
well formed。我们需要查看 XML -
更新:编辑没有抱怨,我使用 W3 学校 XML Validator 进行了检查。我也可以发布代码。
标签: java xml eclipse xml-parsing