2014-02-07 51 views
0

我有一个XML文件中的数据,我需要以某种方式提取并显示,以便我可以运行一些测试。格式化XML数据进行测试

XML中的数据是这个样子

<is:Person> 
    <is:PersonId/> 
    <is:NationalIdentificationNumber/> 
    <is:Name> 
     <dg:Title/> 

我需要的是它显示了这样

is:Person/is:PersonID 
is:Person/is:NationalIdentificationNumber 
is:Person/is:Name/ 
is:Person/is:Name/dg:Title 

...

如何做任何想法这个?

+0

我不知道该怎么尝试 – user3285439

回答

0

您问题中的数据不是格式良好的XML。它缺乏结束标签。

一旦结束标记的加入,您可以使用它xmlstarlet获得结构:

$ xmlstarlet el [input file] 

输出将被几乎所有你已经在你的问题中所示的内容:

is:Person 
is:Person/is:PersonId 
is:Person/is:NationalIdentificationNumber 
is:Person/is:Name 
is:Person/is:Name/dg:Title 

它会抱怨isdg是未定义的命名空间。 XML不要求使用名称空间,并且当不使用名称空间时,XML验证程序应该在元素名称中接受冒号。但是,我不知道一个会使xmlstarlet不会抱怨的标志。

+0

谢谢,但是你在哪里添加了结束标记? – user3285439

+0

我已将“”附加到问题中显示的XML上。您应该阅读XML的基础知识,因为这非常基础。 – Louis

+0

使用重定向:'xmlstarlet el [输入文件]> [要存储输出文件的路径]'。 – Louis