使用Regexp进行搜索XML

时间:2014-01-21 11:39:37

标签: xml regex delphi

如何通过Regex搜索xml文件并在Delphi中获取特定的属性值?

例如在这个xml:

<?xml version=”1.0” encoding=”UTF-8” ?> 
<School>
    <Class>
        <StudentID> 1 </StudentID> 
        <StudentName> Joe </StudentName> 
        <StudentFamily> Brown </StudentFamily> 
    </Class>
    <Class>
        <StudentID> 2 </StudentID> 
        <StudentName> Michel </StudentName> 
        <StudentFamily> Adams </StudentFamily> 
    </Class>
    <Class>
        <StudentID> 3 </StudentID> 
        <StudentName> Joel </StudentName> 
        <StudentFamily> Thompson </StudentFamily> 
    </Class>

</School>

也就是说,搜索“Joe *”(在StudentName属性中)代码应该返回“Brown”和“Thompson”(来自StudentFamily属性)。

在简单的情况下,我可以将findNode函数用于xmlDocument,但我必须使用Regex。

欢迎任何想法。

2 个答案:

答案 0 :(得分:0)

怎么样: (?:\<StudentName\> Joe.* \<\/StudentName\>[\s]*<StudentFamily>\s*)(\w*) 当然,你必须构建模式并将“Joe *”作为“Joe。*”放在正确的位置

答案 1 :(得分:0)

尝试:

(?:<StudentName>\sjoe[^< ]*).*?\n.*?<StudentFamily>([^<]*)

<强> Demo

说明:  enter image description here