代码之家  ›  专栏  ›  技术社区  ›  Maxim

xmllint:使用从列表中获取项目

  •  2
  • Maxim  · 技术社区  · 7 年前

    我阅读了许多关于类似问题的xmllint答案,但似乎没有一个适用于我的具体案例(可能我错过了它)。无论如何,我有以下XML:

    <?xml version="1.0"?>
    <items>
      <item>
        <name>Name 1</name>
        <value>3</value>
      </item>
      <item>
        <name>Name 2</name>
        <value>4</value>
        <othervalue>5</othervalue>
      </item>
    </items>
    

    xmllint --xpath '//items/item[@name="Name 1"]' test.xml
    

    XPath set is empty
    -:1: parser error : Document is empty
    

    我怀疑是因为“name”不是“item”标记内的属性,但我不确定如何处理它,有没有一种方法可以迭代项目并检查每个项目的名称(可能使用bash脚本)?

    1 回复  |  直到 7 年前
        1
  •  2
  •   Daniel Haley    7 年前

    name 不是属性,因此不应在其前面加前缀 @ (即 abbreviated syntax attribute:: ).

    尝试:

    /items/item[name="Name 1"]/value