当我尝试解析文件时,如何阻止我的XML文件被截断

时间:2014-01-31 21:53:31

标签: java xml eclipse xml-parsing

当我的程序尝试从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>

1 个答案:

答案 0 :(得分:0)

您向我们展示的文件格式不正确。文件末尾没有</Config>结束标记。添加一个。