在 .svg xml 中按 ID 选择元素

2024-01-07

我生成一个.svg使用 Inkscape 生成图像(这是一个 xml 文件)。我将节点的 ID 设置为“mount-arm-r”。我想从该元素读取属性“x”、“y”。我似乎无法选择rect元素。

python:我尝试了 XPath,或者手动一次深度。我想我想要:

def parse_xml():
    tree = ElementTree()
    tree.parse("torso-human.svg")                        
    for node in tree.findall('.//rect'): print 'n=', node

xml:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->

<svg
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:cc="http://creativecommons.org/ns#"
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:svg="http://www.w3.org/2000/svg"
   xmlns="http://www.w3.org/2000/svg"
   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
   width="125.39109"
   height="217.70497"
   id="svg3136"
   version="1.1"
   inkscape:version="0.48.1 "
   sodipodi:docname="torso-human.svg">
  <defs
     id="defs3138" />
  <sodipodi:namedview
     id="base"
     pagecolor="#ffffff"
     bordercolor="#666666"
     borderopacity="1.0"
     inkscape:pageopacity="0.0"
     inkscape:pageshadow="2"
     inkscape:zoom="0.7"
     inkscape:cx="134.17406"
     inkscape:cy="65.046531"
     inkscape:document-units="px"
     inkscape:current-layer="layer1"
     showgrid="false"
     fit-margin-top="0"
     fit-margin-left="0"
     fit-margin-right="0"
     fit-margin-bottom="0"
     inkscape:window-width="678"
     inkscape:window-height="714"
     inkscape:window-x="149"
     inkscape:window-y="198"
     inkscape:window-maximized="0" />
  <metadata
     id="metadata3141">
    <rdf:RDF>
      <cc:Work
         rdf:about="">
        <dc:format>image/svg+xml</dc:format>
        <dc:type
           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
        <dc:title></dc:title>
      </cc:Work>
    </rdf:RDF>
  </metadata>
  <g
     inkscape:label="Layer 1"
     inkscape:groupmode="layer"
     id="layer1"
     transform="translate(-94.4375,-394.94334)">
    <path
       style="fill:#f7b42a;fill-opacity:1;stroke:#000000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
       d="m 123.77824,405.89569 c 10.24991,-3.38432 20.79684,-5.42837 31.38251,-7.00357 10.08459,-3.35769 18.78867,2.77879 26.91852,7.6971 11.31402,4.36385 16.77569,16.06584 23.028,25.60256 4.24045,8.35939 4.95844,18.18912 6.47883,27.32923 0.81646,12.84443 3.26716,25.52723 3.78171,38.41123 0.89978,12.5961 -0.39774,25.23801 1.24629,37.81448 1.02427,12.22291 -1.40473,24.93719 -8.43715,35.07825 -7.47966,16.13252 -19.54923,31.09303 -36.14012,38.36243 -9.64999,2.44233 -17.82857,-5.59005 -27.35583,-5.23341 -14.78262,-5.55 -28.81674,-15.655 -35.88284,-30.0959 -5.41188,-15.13741 -10.887811,-30.71753 -11.350781,-46.928 3.049751,-10.81513 3.565751,-21.8035 1.94578,-33.0368 1.513801,-9.31727 -2.45929,-18.6844 -0.0771,-27.86458 4.302571,-16.70927 8.728671,-33.70461 17.388141,-48.73973 2.49669,-3.69472 5.83731,-6.99007 7.074,-11.39329 z"
       id="path3757"
       inkscape:connector-curvature="0" />
    <rect
       style="fill:#ff0000;fill-opacity:1;stroke:#aa0000;stroke-width:2.06586957;stroke-linecap:square;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
       id="mount-arm-r"
       width="24.593687"
       height="4.9187374"
       x="279.40387"
       y="403.92834"
       transform="matrix(0.96592583,0.25881905,-0.25881905,0.96592583,0,0)"
       ry="1.8705337" />
    <rect
       ry="2.0732613"
       transform="matrix(0.14071606,0.99004999,-0.99004999,0.14071606,0,0)"
       y="-109.61398"
       x="607.01672"
       height="5.4518275"
       width="27.259138"
       id="mount-leg-l"
       style="fill:#ff0000;fill-opacity:1;stroke:#aa0000;stroke-width:2.2897675;stroke-linecap:square;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
       inkscape:transform-center-x="-10.607363"
       inkscape:transform-center-y="-7.3172785" />
    <rect
       inkscape:transform-center-y="-4.1491271"
       inkscape:transform-center-x="-9.047332"
       style="fill:#ff0000;fill-opacity:1;stroke:#aa0000;stroke-width:1.76860404;stroke-linecap:square;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
       id="mount-leg-r"
       width="21.05481"
       height="4.2109618"
       x="585.27789"
       y="-149.50224"
       transform="matrix(-0.03269097,0.99946551,-0.99946551,-0.03269097,0,0)"
       ry="1.6013756" />
  </g>
</svg>

您忘记了 SVG 命名空间,它是在根元素上声明的(xmlns="http://www.w3.org/2000/svg")。因此,你想要这样的东西:

SVG_NS = "http://www.w3.org/2000/svg"

def parse_xml():
    tree = ElementTree()
    tree.parse("torso-human.svg")                        
    for node in tree.findall('.//{%s}rect' % SVG_NS):
        print 'n=', node

See http://effbot.org/zone/element-namespaces.htm http://effbot.org/zone/element-namespaces.htm了解更多详细信息。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 .svg xml 中按 ID 选择元素 的相关文章

  • 按每个元素中出现的数字对字符串列表进行排序[重复]

    这个问题在这里已经有答案了 我有一个脚本 其目的是对不断下载到服务器上的空间数据集文件进行排序和处理 我的列表目前大致如下 list file t00Z wrff02 grib2 file t00Z wrff03 grib2 file t0
  • 学习Python中的解析器

    我记得我读过有关解析器的内容 您只需提供一些示例行 它就知道如何解析某些文本 它只是确定两条线之间的差异 以了解可变部分是什么 我以为它是用 python 写的 但我不确定 有谁知道那是什么图书馆吗 可能你的意思是模板制作器 http co
  • pandas read_csv 之前预处理数据文件

    我使用 SAP 的数据输出 但它既不是 CSV 因为它不引用包含其分隔符的字符串 也不是固定宽度 因为它具有多字节字符 它是一种 固定宽度 字符 为了将其放入 pandas 我当前读取文件 获取分隔符位置 对分隔符周围的每一行进行切片 然后
  • caffe安装:opencv libpng16.so.16链接问题

    我正在尝试在 Ubuntu 14 04 机器上使用 python 接口编译 caffe 我已经安装了 Anaconda 和 opencvconda install opencv 我还安装了咖啡中规定的所有要求 并更改了注释块makefile
  • 删除 tkinter 文本默认绑定

    我正在制作一个简单的 tkinter 文本编辑器 但我想要所有默认绑定文本小部件如果可能的话删除 例如当我按Ctrl i它默认插入一个制表符 我制作了一个事件绑定来打印文本框中有多少行 我将事件绑定设置为Ctrl i以及 当我运行它时 它会
  • DataFrame.loc 的“索引器太多”

    我读了关于切片器的文档 http pandas pydata org pandas docs stable advanced html using slicers一百万次 但我从来没有理解过它 所以我仍在试图弄清楚如何使用loc切片Data
  • 在多核上运行 python 线程

    我知道Python 2 7不允许在不同的内核上运行多个线程 你需要使用multiprocessing模块以实现某种程度的并发性 我正在看concurrent futuresPython 3 4 中的模块 是否使用ThreadPoolExec
  • 右键单击 QPushButton 上的 contextMenu

    对于我的应用程序 我在 Qt Designer 中创建了一个 GUI 并将其转换为 python 2 6 代码 关于一些QPushButton 与设计器创建 我想添加右键单击上下文菜单 菜单选项取决于应用程序状态 如何实现这样的上下文菜单
  • 当元组列表中相同项目的值是字符串时,对它们的值求和

    如果我有这样的元组列表 my list books 5 books 10 ink 20 paper 15 paper 20 paper 15 我怎样才能把列表变成这样 books 15 ink 20 paper 50 即添加同一项目的费用
  • 提高光线追踪命中功能的性能

    我有一个简单的 python 光线追踪器 渲染 200x200 的图像需要 4 分钟 这对于我的口味来说绝对是太多了 我想改善这种情况 几点 我为每个像素发射多条光线 以提供抗锯齿功能 每个像素总共发射 16 条光线 200x200x16
  • matplotlib vlines 图中未应用 y 轴的最小值

    我正在 matplotlib 中绘制 vlines 图 数据集中的所有 y 值如下 gt 0 我希望 y 轴最底部的刻度能够读取0 但相反 我得到 500 这是代码 usr bin env python import numpy as np
  • 机器学习的周期性数据(例如度角 -> 179 与 -179 相差 2)

    我使用 Python 进行核密度估计 并使用高斯混合模型对多维数据样本的可能性进行排名 每一条数据都是一个角度 我不确定如何处理机器学习的角度数据的周期性 首先 我通过添加 360 来删除所有负角 因此所有负角都变成了正角 179 变成了
  • 增强迪基-富勒测试中的 BIC 在 Python 中到底是如何工作的?

    这个问题是关于 statsmodels tsa stattools python 库 adfuller 中的增强迪基 富勒测试实现 原则上 AIC 和 BIC 应该计算一组可用模型的信息标准 并选择最好的模型 信息损失最低的模型 但它们在增
  • 列表中的特定范围(python)

    我有一个从文本字符串中提取的整数列表 因此当我打印该列表 我称之为test I get 135 2256 1984 3985 1991 1023 1999 我想打印或制作一个仅包含特定范围内的数字的新列表 例如1000 2000之间 我尝试
  • 如何在类型提示中定义元组或列表的大小

    有没有办法在参数的类型提示中定义元组或列表的大小 目前我正在使用这样的东西 from typing import List Optional Tuple def function name self list1 List Class1 if
  • 带 Qt 的菜单栏/系统托盘应用程序

    我是 Qt PyQt 的新手 我正在尝试制作一个应用程序 其功能将从菜单栏 系统托盘执行 这里展示了一个完美的例子 我找不到关于如何做到这一点的好资源 有人可以建议吗 Thanks 我认为您正在寻找与QMenu and QMainWindo
  • 在自定义 keras 层的调用函数中传递附加参数

    我创建了一个自定义 keras 层 目的是在推理过程中手动更改前一层的激活 以下是基本层 它只是将激活值乘以一个数字 import numpy as np from keras import backend as K from keras
  • JSONDecodeError:额外数据:Python [重复]

    这个问题在这里已经有答案了 我使用以下代码从文件加载 json file file name obj list with open file as f for json obj in f obj list append loads json
  • 如何仅读取 CSV 文件每行的第一列 [重复]

    这个问题在这里已经有答案了 如何在Python中读取CSV文件每行的第一列 我的数据是这样的 1 abc 2 bcd 3 cde 我只需要循环第一列的值 另外 当我在 calc 中打开 csv 文件时 每行中的数据都在同一个单元格中 这正常
  • XmlDocument Save 使文件保持打开状态

    我有一个简单的 C 函数 可以创建一个基本的 XML 文件并保存 private void CreateXMlFile string Filename string Name string Company XmlDocument doc n

随机推荐

  • 从 mach_timebase_info() 创建结构体

    在 C 中创建时基信息结构很容易 但在 Swift 中 以下内容在 Playground 中不起作用 let timebaseInfo mach timebase info data t mach timebase info timebas
  • 使用 pandas 和 scipy 绘制树状图

    我希望使用相关性生成树状图pandas and scipy 我使用数据集 作为DataFrame 由返回组成 其大小为n x m where n是日期的数量 m公司数量 然后我只需运行脚本 import pandas as pd impor
  • 如何让 ediff + hg 在 emacs 23.2 for mac 中工作?

    我使用 emacs 二进制文件http emacsformacosx com http emacsformacosx com 当我在 Mercurial 源目录中编辑文件并运行 ediff revision 时 我得到 File the f
  • 错误:预期未定义为 GraphQL 模式

    我收到一条错误 内容为 错误 预期未定义为 GraphQL 架构 请检查一下这是什么问题 当我移动到 localhost 3000 graphiql 时 它显示上述错误 也许我犯了一些错误 请任何人检查并帮助我 如果可能的话 我的服务器 j
  • 人脸识别-Python

    我正在尝试通过以下方式进行人脸识别主成分分析 PCA 使用Python 现在我能够获得训练图像之间的最小欧几里德距离images和输入图像input image 这是我的代码 import os from PIL import Image
  • 获取正在激活的选项卡(div)的ID

    我正在使用 jquery 1 9 和 jquery UI 1 10 我希望能够在单击选项卡时获取选项卡 ID 例如 如果我单击名为 Second 的选项卡 我想获得 tabs 2 响应 到目前为止我已经完成了以下代码
  • 我是否应该同步监听器通知?

    我总是很犹豫是否要把我的锁公开 公开 我总是尝试将锁限制在我的实现范围内 我相信 不这样做就会导致僵局 我有以下课程 class SomeClass protected ArrayList
  • 用于相交列列表的一致 ColumnTransformer

    我想用sklearn compose ColumnTransformer对于相交的列列表 一致 不是并行的 因此 第二个变换器应该仅在第一个变换器之后执行 log transformer p FunctionTransformer lamb
  • Gitlab CI:仅在工件存在时运行作业

    我有 monorepo 我想根据已更改的目录内容运行子管道 在工作中prepare config我检查最新更改在哪里 我创建子配置 yml 并在下一阶段的工作中run child我从 运行子管道 问题是 如果model gitlab ci
  • 如何从 .net 中的 WSDL 文件生成客户端?

    我正在尝试从 WSDL 文件生成客户端 而不使用 Visual Studio 本身 并且不知道最好的起点是什么 客户需要使用相同的文件并为 PHP 应用程序生成客户端 我想通过自己创建客户端 在工作室之外 来证明 WSDL 是有效的 svc
  • 检测哪张SIM卡收到消息

    我正在尝试检测哪张 SIM 卡已在双 SIM 卡或三卡支持手机上的 BroadcastReceiver 中接收到传入消息 笔记 所有 SIM 卡都有相同的 SMSC 似乎信息可能位于带有密钥的 Intent extra 中 simSlot
  • 更改函数体内函数的属性?

    我正在尝试创建一个函数来记录它被调用的次数 并且我希望信息保留在函数本身内部 我尝试创建一个包装器 如下所示 def keep count f f count 0 functools wraps f def wrapped f args k
  • 将 SQL 查询读入 Dask DataFrame

    我正在尝试创建一个函数 该函数将 SQL SELECT 查询作为参数 并使用 dask 将其结果读入 dask DataFramedask read sql query功能 我是 dask 和 SQLAlchemy 的新手 我首先尝试了这个
  • Angular Elements - 外部库的 CSS

    我希望将 Angular Elements 与外部库 Kendo UI 一起使用 我设法创建一个组件并将其添加到我的应用程序中 问题是 Kendo 的 CSS 搞乱了我所有的应用程序样式 关于如何封装 CSS 以仅应用于组件而不是 泄漏 到
  • 尝试运行 OSGi 调试目标时支持“平台不受支持”

    我正在尝试运行 IntelliJ Idea 的一个小型 OSGi 项目 我已经在 Idea 的 OSGi 配置部分添加了 Equinox 容器 然后我将 OSGi 方面添加到项目中 到目前为止一切看起来都很好 然而 一旦我尝试运行该项目 我
  • 大型内部类和私有变量

    我多次遇到的一件事是服务类 如 JBoss 服务 由于助手内部类而变得过大 我还没有找到一个好的方法来打破课堂 这些助手通常是线程 这是一个例子 Asset service keeps track of the metadata about
  • 使用 NHibernate 映射字符串集合

    我有一个带有属性的域类IList
  • 如何使用 javascript/css 更改 href 属性的值?

    假设html包含以下结构 div a href http the link that needs to be changed text a div div div div div
  • LaTeX 中的词汇表包和脚注

    我目前陷入困境 有两个单独的术语表 main acronyms Acronyms词汇表在文本中首次使用时打印脚注 但是main词汇表没有 有没有办法制作除其他词汇表之外的其他词汇表acronyms在第一次使用该术语时打印脚注 我不明白该怎么
  • 在 .svg xml 中按 ID 选择元素

    我生成一个 svg使用 Inkscape 生成图像 这是一个 xml 文件 我将节点的 ID 设置为 mount arm r 我想从该元素读取属性 x y 我似乎无法选择rect元素 python 我尝试了 XPath 或者手动一次深度 我