我正在尝试对堆栈交换数据使用xpath查询。 xml文件具有以下结构。
<posts>
<row Id="2" PostTypeId="1" Body="some text goes here" ..... />
</posts>
根据数据,该行具有以下属性。它没有任何文字。
- Id
- PostTypeId
- 1: Question
- 2: Answer
- ParentID (only present if PostTypeId is 2)
- AcceptedAnswerId (only present if PostTypeId is 1)
- CreationDate
- Score
- ViewCount
- Body
- OwnerUserId
- LastEditorUserId
- LastEditorDisplayName="Jeff Atwood"
- LastEditDate="2009-03-05T22:28:34.823"
- LastActivityDate="2009-03-11T12:51:01.480"
- CommunityOwnedDate="2009-03-11T12:51:01.480"
- ClosedDate="2009-03-11T12:51:01.480"
- Title=
- Tags=
- AnswerCount
- CommentCount
- FavoriteCount
我想使用xpath查询查询此xml文档。例如,/ posts / row [@ PostTypeId =“1”] / @ Body。那就是提取PostTypeId =“1”(问题)的所有主体。我使用工具http://www.xmlme.com/XpathTool.aspx尝试了上述查询。它按预期从xml文档中检索类型问题的Body。
然而,我尝试使用以下方法在ubuntu中进行尝试。
我自己用lxml.etree编写了一个python脚本。代码如下。
tree = etree.parse(input file)
print (tree.xpath(xpathexpression))
我用上面类似的命令行调用了上面的python脚本。它说没有找到匹配的节点。 3. libxml2-utils - 尝试过xmllint --pattern“/ posts / row [@PostTypeId = \”1 \“] / @ Body”posts.xml。它还抱怨说找不到匹配的节点。
鉴于xpath查询适用于在线工具,但它不能在命令行上运行,我很谦虚地认为在命令行上输入xpath查询需要特别考虑。在ubuntu上使用bash脚本中的命令行工具时,给出了什么是正确的xpath查询?