1

XML 节点

 <!-- url path="/jsp/Admin_BetaSignup.jsp" roles="ZohoCampaignAdmin" authentication="optional" description="Page used to add the Beta users">
        <param name="zuid" xss="throwerror" max-len="300"/>
</url -->

我想通过 xpath 选择这个节点。我在 java 中使用下面的代码。

Document document = DocumentBuilderFactory.newInstance()
    .newDocumentBuilder()
    .parse("/home/local/ZOHOCORP/bharathi-1397/build/AdventNet/Sas/webapps/zcadmin/WEB-INF/security.xml");
XPath xpath = XPathFactory.newInstance().newXPath();
System.out.println(
    xpath.evaluate("//comment()[@path='/jsp/Admin_BetaSignup.jsp']",
    document,XPathConstants.NODE)
);

输出:空。

为什么?

4

2 回答 2

3

评论不是元素节点,它不包含属性。所以你必须得到所有的评论节点,然后解析它们。

于 2012-05-17T09:49:39.413 回答
1

使用

//comment()[contains(., 'path="/jsp/Admin_BetaSignup.jsp"')]

基于 XSLT 的验证

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>

 <xsl:template match="/">
     <xsl:copy-of select=
     "//comment()
         [contains(., 'path=&quot;/jsp/Admin_BetaSignup.jsp&quot;')]
    "/>
 </xsl:template>
</xsl:stylesheet>

当此转换应用于以下 XML 文档时:

<!-- url path="/jsp/Admin_BetaSignup.jsp" roles="ZohoCampaignAdmin" authentication="optional" description="Page used to add the Beta users">         <param name="zuid" xss="throwerror" max-len="300"/> </url -->
<t>
 <!-- Another comment -->
</t>

选择想要的评论节点并将其复制到输出:

<!-- url path="/jsp/Admin_BetaSignup.jsp" roles="ZohoCampaignAdmin" authentication="optional" description="Page used to add the Beta users">         <param name="zuid" xss="throwerror" max-len="300"/> </url -->
于 2012-05-17T12:55:23.963 回答