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)
);

出力: null 。

なんで?

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 に答える