我有超过一百个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;柱。但是,它不是一个可行的解决方案。
如果有人能指出我在这里做什么的正确方向,我将非常感激。我从未尝试过这样的事情。谢谢!
答案 0 :(得分:1)
正则表达式是解析XML的错误工具。改为使用XPath。
例如:
xmlstarlet sel -t -v "/filler/content/@author" test.xml
将返回
testuauthor1
testuauthor2
testuauthor3
按要求。