XPath解析不包括标签和存储在钥匙值对中

发布于 2025-01-22 23:46:30 字数 1055 浏览 2 评论 0原文

我正在使用telegraf使用XPATH来解析XML的摘要,但我无法获得适当的结果。

<?xml version="1.0" encoding="UTF-8"?>
     <report>
         <sampleduration>900</sampleduration>
         <network>
            <gateway>
              <red><element>103</element></red>
              <blue><element>105</element></blue>
              <black><element>120</element></black>
            </gateway>
          </network>
      </report>

现在,我希望结果为red = 103,blue = 105,black = 120,但我无法得到它。

这只是一个很小的片段,我有数千行,所以我无法给出确切的名称来获得结果。

我试图为上述生成XPath,并得到以下结果,但这不是我所期望的。

/report
/report/network
/report/network/gateway
/report/network/gateway/black
/report/network/gateway/black/element
/report/network/gateway/blue
/report/network/gateway/blue/element
/report/network/gateway/red
/report/network/gateway/red/element
/report/sampleduration

如果我超过XPath telegraf,请不要提供适当的输出。我们不确定要通过哪个XPath。

I am using telegraf to parse the snippet of XML using the XPath but I am not able to get the proper result.

<?xml version="1.0" encoding="UTF-8"?>
     <report>
         <sampleduration>900</sampleduration>
         <network>
            <gateway>
              <red><element>103</element></red>
              <blue><element>105</element></blue>
              <black><element>120</element></black>
            </gateway>
          </network>
      </report>

Now I want the result as red = 103,blue = 105,black = 120 but I am not able to get it.

This is just a very small snippet I have thousand of lines so I can't give the exact name to get the result.

I tried to generate the XPath for the above and got the below result but it's not what I expect.

/report
/report/network
/report/network/gateway
/report/network/gateway/black
/report/network/gateway/black/element
/report/network/gateway/blue
/report/network/gateway/blue/element
/report/network/gateway/red
/report/network/gateway/red/element
/report/sampleduration

If I pass above XPath telegraf don't give proper output. We are not sure which XPath to pass.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

墟烟 2025-01-29 23:46:30

在XPATH 3.0中,

string-join(//gateway/* ! (name() || '=' || .), ",")

在XPath 1.0中,我认为对于Gateway可以有任何数量有任意名称的儿童的一般情况,它不能做到这一点,尽管对于您知道它有三个孩子的情况非常容易,尤其是在你知道他们的名字是什么:

concat('red = ', //gateway/red, 
       ', blue = ', //gateway/blue, 
       ...)

In XPath 3.0,

string-join(//gateway/* ! (name() || '=' || .), ",")

In XPath 1.0 I don't think it can be done for the general case where gateway can have any number of children with arbitrary names, though it's easy enough for the case where you know it has exactly three children, especially if you know what their names are:

concat('red = ', //gateway/red, 
       ', blue = ', //gateway/blue, 
       ...)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文