我有一个XML文档,其片段行可能如下所示:
<p>Some text <!--a comment --> some more text <b>some bold text</b> something else etc</p>
我想根据其文字选择评论,但也包括以下所有&#34; sibling&#34;元素。在这个例子中,我知道我可以用&#39; // comment()[来获得评论。 =&#34;评论&#34;]&#39;。
我如何得到结果:&#34;更多文字一些粗体文字其他等等&#34;? (段落标签内的其余兄弟姐妹)
如果它有任何区别,我使用python和etree进行解析。
编辑:
我的测试XML完整:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<p>A paragraph<!--A comment--><b>test</b>A line break</p>
</root>
我的测试XSLT:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:template match="/">
<xsl:copy-of select='//comment()/following-sibling::node()'/>
</xsl:template>
</xsl:stylesheet>
结果:
<?xml version="1.0" encoding="UTF-8"?>
或者,在Python中,使用lxml,只需一个&#34;无&#34;对象
编辑#2:
我很糟糕 - 接受的答案很有效!
答案 0 :(得分:1)
如果你想得到所有兄弟姐妹,包括其他评论:
//comment()[.="a comment "]/following-sibling::node()
例如:
>>> xml.xpath('//comment()[.="a comment "]/following-sibling::node()')
[' some more text ', <Element b at 0x2923af0>, ' ', <!-- other comment -->, ' something else etc']
我添加了其他评论,但以其他方式使用了您的输入数据。