xml - xmlstarlet:如果子级存在,则选择属性

标签 xml svg xpath xmlstarlet

我有一个svg,其中包含以下内容(已精简):

<svg
   xmlns="http://www.w3.org/2000/svg"
   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape">
   <g
     inkscape:label="base"
     inkscape:groupmode="layer"
     id="layer1"
     transform="translate(0,-600)">
    <image
       sodipodi:absref="/Untitled.png"
       xlink:href="/Untitled.png"
       width="800"
       height="500"
       preserveAspectRatio="none"
       id="image5168"
       x="3.67"
       y="596" />
  </g>
  <g
     inkscape:groupmode="layer"
     id="layer30"
     inkscape:label="triangle">
    <path
       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
       d="M 273,340 290,127 563,307 Z"
       id="path5174"
       inkscape:connector-curvature="0" />
  </g>
</svg>


Complete XML

当我查询:

xmlstarlet sel -t -v "//_:svg/_:g/@inkscape:label" drawing.svg

我得到:

base
triangle


我一直在研究条件语句,但是只有找到ginkscape:label节点时,我才能找到一种选择方法;否则,如果不包含path节点]。

最佳答案

要仅获取具有子gpath,只需在path的谓词中添加g即可:

//_:svg/_:g[_:path]/@inkscape:label

关于xml - xmlstarlet:如果子级存在,则选择属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41437971/

相关文章:

svg - SVG笔触和填充之间的空间

c# - 我如何知道 Selenium 在父节点下的节点位置?

java - 使用空白字符规范化从 Node 获取 TextContent

css - Selenium Python 我正在尝试使用 XPATH 或 CSS 选择器从嵌套的 span 标记中选择一个下拉列表

java - 字符串在数据库中作为整数发布

iphone - 如何在 iPhone 中解析 gdata xml?

html - 更改svg中图像的背景颜色

javascript - Angular2渲染器: Svg rect is rendered but not showing in page

javascript - 使用 jQuery : works on server, 不在本地导入 XML

java - 如何使用 .xml 在 Android 中的 TableLayout 中动态添加 TableRow?