如何验证我的3,000,000行长XML文件?

时间:2017-11-28 12:45:01

标签: xml validation xml-parsing notepad++ large-data

我有一个XML文件。这几乎是正确的,但事实并非如此。

Error on line 302211.
Extra Content at the end of the document.

我花了两天时间尝试调试这个,但文件太大了,几乎不可能。有什么我能做的吗?

以下是相关的行(我在错误代码之前包含2行,错误从<seg>标记开始)。

 <tu>
   <tuv xml:lang="en"> 
    <prop type="feed"></prop>
    <seg>
        <bpt i="1" x="1" type="feed">
            test
        </bpt>
        To switch on computer:
        <ept i="1">
            &gt;
        </ept>
        Press device 
        <ph x="2" type="feed">
            &lt;schar _TR=&quot;123&quot; y.io.name
        </ph> or 
        <ph x="3" type="feed">
            &lt;schar _TR=&quot;274&quot; y.io.name=&quot;
        </ph> (Spain) twice. 
    </seg>
 </tuv>
</tu>

有人能给我一些关于在这里找到问题的指示吗?我正在使用Notepad ++ XML插件。

1 个答案:

答案 0 :(得分:3)

背景说明

  • 您发布的XML片段本身就是一个格式良好的XML document - 问题必须在XML中的其他位置。
  • 您的特定XML问题是well-formedness, not validity

查找XML格式良好问题的提示

  1. 使用具有更好诊断消息的XML解析器。 Xerces的基础 工具有非常好的消息(尽管有few exceptions)。
  2. 了解导致XML文档不存在的常见问题 以及形成:
  3. 分而治之。考虑一个巨大的XML文档草图:

    <root>
       <First>
           <FirstChild>
              <!-- Tons of descendent markup -->
           </FirstChild>
           <SecondChild>
              <!-- Tons of descendent markup -->
           </SecondChild>
       </First>
       <Second>
           <!-- Tons of descendent markup -->
       </Second>
    </root>
    

    消除过程:

    1. 删除First元素。
    2. 重新验证。
    3. 如果错误消失,请恢复First元素并移除Second元素。
    4. 否则,请删除FirstChild元素。
    5. 重复,直到在简化的XML文档中更容易发现错误。
  4. 另见