2016-11-14 114 views
-1

我有一个C++程序,用户可以在其中存储轨道的.xml文件。基本上这些文件是.gpx文件,只需稍作更改,以便pugixml可以读取它。我怎样才能确保用户选择的文件格式正确?例如重要的是,<name>Track x,并且节点名称是正确的。 这是这样一个文件的例子:验证XML文件的简单方法

<?xml version='1.0' encoding='UTF-8'?> 
<trk> 
    <name>Track 1</name> 
    <trkseg> 
     <trkpt lat="48.08162894291554" lon="11.274891365644537"> 
     </trkpt> 
     <trkpt lat="48.08167553246409" lon="11.274872590181431"> 
     </trkpt> 
    </trk> 
    <trk> 
    <name>Track 2</name> 
    <trkseg> 
     <trkpt lat="48.08162939089216" lon="11.274952385899628"> 
     </trkpt> 
    </trkseg> 
</trk> 

有一种简单的方法来验证.xml文件的形式?或者我必须手动检查?

回答

1

我知道两种方法来验证xml文件:

两种验证方法应该由解析器来处理。选择哪种方法取决于验证所需的粒度级别,因此XSD(架构)更加复杂,并且适用于您。所以如果有一个DTD(Doctype Definition)可用,那么使用它可能更“容易”。你当然也可以编写一些验证的代码,但我想这不是你正在寻找的“简单方法”。

+0

对不起愚蠢的问题@philipp,但我该如何使用DOCTYPE?我在'<?xml version ='1.0'encoding ='UTF-8'?>'下面放置了<<!DOCTYPE Root SYSTEM“doctypedefinition.dtd”>“,并用名称”doctypedefinition.dtd“编写了一个单独的文件哪个节点必须按哪个顺序进入? – Lehue

+0

然后我告诉pugixml它应该检查'node_doctype'文件是否使用doctype'Root'? – Lehue

+0

@ A.Hue U已更新维基百科链接,因为这是德文错误。你可以在那里找到细节。这将是一种太多了,在这里解释所有的细节 – philipp