【问题标题】:Extracting content of variable in XML-files提取 XML 文件中变量的内容
【发布时间】:2017-11-20 02:01:49
【问题描述】:

我有一百多个 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[\=\"].*[\"\&gt;])

我对 Regex 很陌生,但我在此处的另一个出色线程中找到了上述内容。我将它与 Notepad++ 的搜索功能一起使用。它确实突出了by="author",但也突出了该行的其余部分,即。 &gt;&lt;/content&gt;,意思是‘content’的内容也被高亮了,这是个问题。

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

我已经搜索了几个小时来寻找解决方案,但也许我遗漏了一些明显的东西。我什至尝试将每个 .xml 文件转换为 .csv 并剥离 .csv 文档中的所有内容,但“作者”列除外。不过,这不是一个可行的解决方案。

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

【问题讨论】:

  • 在 NPP 搜索和替换窗口中尝试 \bauthor="([^"]+)"|(?s:.) 并替换为 (?1$1\n:)
  • 詹姆斯,有什么对你有用的吗?

标签: regex xml notepad++ extract


【解决方案1】:

Regex 是解析 XML 的错误工具。请改用 XPath。

例如:

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

会回来

testuauthor1
testuauthor2
testuauthor3

根据要求。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-26
    • 1970-01-01
    相关资源
    最近更新 更多