2012-05-17 114 views
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。

为什么?

+0

我不认为意见可以有属性... – beerbajay

回答

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 --> 
3

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