2017-10-19 9 views
0

xpathを単純なものにしようとしていますが、私は成功しません。私はこれをやろうとしているXpathが動作しない[Jasper JRXML]

<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="Blank_A4_3" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="9ee0559e-6301-4cbe-b82b-2aa69bbe43c1"> 
<property name="com.jaspersoft.studio.data.defaultdataadapter" value="One Empty Record"/> 
<property name="com.jaspersoft.studio.data.defaultdataadapter" value="One Empty Record"/> 
<property name="com.jaspersoft.studio.data.defaultdataadapter" value="One Empty Record"/> 
<parameter name="Parameter1" class="java.lang.String"/> 
<queryString> 
    <![CDATA[]]> 
</queryString></jasperReport> 

は、私は、次のXML持っ $queryString = $xml->xpath("/queryString");

をが、これは、配列を返す(0)。

答えて

0

あなたのXML(http://jasperreports.sourceforge.net/jasperreports)のデフォルトの名前空間を持っているので、あなたはそれを登録し、XPathを使用した要素のいずれかを見つけるためにそれを使用する必要があります...コードで

<?php 
error_reporting (E_ALL); 
ini_set ('display_errors', 1); 


$xml = <<<EOB 
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="Blank_A4_3" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="9ee0559e-6301-4cbe-b82b-2aa69bbe43c1"> 
<property name="com.jaspersoft.studio.data.defaultdataadapter" value="One Empty Record"/> 
<property name="com.jaspersoft.studio.data.defaultdataadapter" value="One Empty Record"/> 
<property name="com.jaspersoft.studio.data.defaultdataadapter" value="One Empty Record"/> 
<parameter name="Parameter1" class="java.lang.String"/> 
<queryString> 
    <![CDATA[]]> 
</queryString></jasperReport> 
EOB; 

$xml = simplexml_load_string($xml); 
$xml->registerXPathNamespace("d", "http://jasperreports.sourceforge.net/jasperreports"); 
$queryString = $xml->xpath("//d:queryString"); 
print_r($queryString[0]->asXML()); 

、私が使用既定の名前空間のdの疑似接頭辞を入力し、これをクエリの一部として配置します。また、//を最初に使用することにも注意してください。 - XPath式の先頭にある/を使用することは、それがルート要素であると仮定しています。//要素を検索します。

出力が...

<queryString> 
    <![CDATA[]]> 
</queryString> 
+0

パーフェクトです!ありがとう –

関連する問題