在XML文件中提取变量的内容

时间:2017-11-20 02:01:50

标签: regex xml notepad++ extract

我有超过一百个XML文件,包含以下数千行:

<filler name="1" subject="Test subject"> ' <content subject="Test subject" date="2017-20-11" author="testuauthor1">Blah</content> <content subject="Test subject" date="2017-20-11" author="testuauthor2">Blah</content> <content subject="Test subject" date="2017-20-11" author="testuauthor3">Blah</content> ' </filler>

我试图找到一种方法来提取“作者”的内容,所以剩下的就是:

testauthor1 testauthor2 testauthor3

我试图在Notepad ++中使用正则表达式。我现在拥有的是以下代码:

(author[\=\"].*[\"\>])

我对Regex很陌生,但我在这里找到了另一个优秀的主题。我在Notepad ++的搜索功能中使用它。它突出显示by="author",但也突出了其余部分,即。 ></content>,意思是&#39;内容&#39;也突出显示,这是一个问题。

所以这显然不是一个解决方案。并且甚至如果我设法突出显示每个人by="author",我需要将其中的每一个都粘贴到一个新文档中,但我们正在谈论成千上万的事件。

我已经搜索了几个小时的解决方案,但也许我错过了一些明显的东西。我甚至尝试将每个.xml文件转换为.csv并剥离.csv文档中的所有内容,但是&#39;作者&#39;柱。但是,它不是一个可行的解决方案。

如果有人能指出我在这里做什么的正确方向,我将非常感激。我从未尝试过这样的事情。谢谢!

1 个答案:

答案 0 :(得分:1)

正则表达式是解析XML的错误工具。改为使用XPath。

例如:

xmlstarlet sel -t -v "/filler/content/@author" test.xml

将返回

testuauthor1
testuauthor2
testuauthor3

按要求。