2015-06-19 1 views
1

Я хочу, чтобы прочитать файл XML, как показано нижеПрочитать ключевое значение, связанное с XML-файлом через ant?

<?xml version="1.0" encoding="UTF-8"?> 
<classpath> 
    <classpathentry kind="con" path="org.eclipse.jst.server.core.container/com.ibm.ws.st.core.runtimeClasspathProvider/com.ibm.worklight"/> 
    <classpathentry kind="con" path="com.worklight.studio.plugin.classpath.SERVER_CONTAINER"/> 
    <classpathentry kind="src" path="server/java"/> 
    <classpathentry kind="src" path="common"/> 
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> 
    <classpathentry kind="src" output="adapters/adp1/bin" path="adapters/agent/src"/> 
    <classpathentry kind="src" output="adapters/adp2/bin" path="adapters/alerts/src"/> 
    <classpathentry kind="src" output="adapters/adp3/bin" path="adapters/billing/src"/> 
    <classpathentry kind="src" output="adapters/adp4/bin" path="adapters/client/src"/> 
    <classpathentry kind="src" output="adapters/adp5/bin" path="adapters/category/src"/> 
</classpath> 

Я хочу, чтобы прочитать значение path где kind является "src". Я могу получить все значение пути, но не могу указать на него условие. Я использую следующий код.

<target name="xml"> 
    <echo>Test For Each</echo> 
    <for list="${classpath.classpathentry.path}" param="letter" delimiter=","> 
    <sequential> 
     <echo message="path ::: @{letter}"/> 
    </sequential> 
    </for> 
</target> 

Он работает отлично со всеми path значениями, но то, что я должен сделать, чтобы получить значение path где kind является "src"?

+0

Не могли бы вы пояснить, каким образом вы получаете значение {classpath.classpathentry.path} $? Ваш вопрос помечен xmltask, это то, что вы использовали? Пожалуйста, включите этот сниппет тоже –

+0

yes Я использовал xmltask – kiran

+0

Возможно, было бы проще использовать задачу XSLT для преобразования в простой файл свойств ключа = значение – Stavr00

ответ

2

Как я уже сказал в комментарии, следующий XSLT будет анализировать все записи classpath вида = src и сгенерировать оператор прямой строки.

getclasspath.xslt

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="text" version="1.0" encoding="UTF-8" indent="yes"/> 
    <xsl:template match="/classpath"> 
     <xsl:text>path=</xsl:text> 
     <xsl:for-each select="classpathentry[@kind='src']"> 
      <xsl:value-of select="@path"/> 
      <xsl:text>;</xsl:text> 
     </xsl:for-each> 
    </xsl:template> 
</xsl:stylesheet> 

Тогда следующий муравей задача:

<xslt style='getclasspath.xslt' in='classpath.xml' out='classpath.properties' /> 
+0

Я пытался запустить, как вы написали, но это ошибка. [Fatal Error] getclasspath.xslt: 3: 6: Обработка совпадение команд "[xX] [mM] [lL]" не допускается. Фатальная ошибка! org.xml.sax.SAXParseException; systemId: файл: /Users/admin/Desktop/getclasspath.xslt; lineNumber: 3; columnNumber: 6; Согласование целевой команды обработки «[xX] [mM] [lL]» недопустимо. Причина: org.xml.sax.SAXParseException; systemId: файл: /Users/admin/Desktop/getclasspath.xslt; lineNumber: 3; columnNumber: 6; Согласование целевой команды обработки «[xX] [mM] [lL]» недопустимо. – kiran

+1

Вот некоторая информация о вашей ошибке http://stackoverflow.com/questions/19889132/error-the-processing-instruction-target-matching-xxmmll-is-not-allowed Убедитесь, что XML-вход и стиль XSLT чисты. – Stavr00

 Смежные вопросы

  • Нет связанных вопросов^_^