Java 如何在尝试解析XML文件时阻止其被截断

Java 如何在尝试解析XML文件时阻止其被截断,java,xml,eclipse,xml-parsing,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;行号:74;栏目号:20;XML文档结构必须在同一实体中开始和结束。 经过一点阅读,我相当确定这是因为解析器正在截断

当我的程序试图读取XML配置文件时,我遇到以下错误:

org.xml.sax.SAXParseException;systemId:file:/home/sara/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/PoseidonWebserviceWAR_v12/config.xml;行号:74;栏目号:20;XML文档结构必须在同一实体中开始和结束。

经过一点阅读,我相当确定这是因为解析器正在截断我的XML文件,导致程序认为我没有格式良好的XML。但是,我对调试这个问题感到非常茫然,因为我还不熟悉像我正在做的那样的web项目

另一个奇怪的地方是:我的web项目已经运行了好几个星期了,现在还可以,但是现在我突然发现了这个错误?有人能解释一下吗

下面的代码来自我定义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);
同样,这些方法已经很好地工作了一段时间,但是现在突然文件被截断了。这可能是什么原因造成的

----更新----这是我的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.
Dish1
2.
碟2
3.
天空1
4.
天空2
5.
天空3
6.
天空4
7.
资料来源7
8.
资料来源8
1.
角落-TV1
2.
左-TV2
3.
主电视-TV3
4.
右-TV4
5.
办公室-TV5
6.
酒吧-TV6
7.
户外-TV7
8.
楼下-TV8
EE11111
城市固体废物
/dev/ttyS0

您显示给我们的文件格式不正确。文件末尾没有
结束标记。添加一个。

您的xml是什么样子的?xml编辑器没有抱怨内容吗?这听起来好像您的xml文件格式不正确。我们需要查看XMLUPDATE:编辑器没有抱怨,我使用W3学校XML验证器进行了检查。我也可以发布代码。