【问题标题】:How to stop my XML file from being truncated when I try and parse the file当我尝试解析文件时如何阻止我的 XML 文件被截断
【发布时间】: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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-01
    • 2011-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    相关资源
    最近更新 更多