0

次のデータを含むファイルがあるとします。

  ...
    <wsdl:message>
      ...
    </wsdl:message>
    <wsdl:message>
      ...
    </wsdl:message>
    <wsdl:message>
      ...
    </wsdl:message>
  ...

<wsdl:message>最初と最後の間のすべてのデータを取得するための適切な正規表現は何でしょう</wsdl:message>か?

または、(提案されているように)適切なXPathソリューション。

主なアイデアは、データのその部分を見つけて置き換えたいということです。

4

2 に答える 2

1

使用するだけです:

//x:message/node()

ここで、プレフィックスは (XPath をホストx:しているプログラミング言語で) wsdl 名前空間にバインドされます。これは、しばしば「名前空間の登録」と呼ばれます)。

または、この名前空間を登録できない場合は、次を使用します

//*[local-name()='message' 
  and 
    namespace-uri() = 'http://schemas.xmlsoap.org/wsdl/'
    ]/node()
于 2012-07-18T03:14:48.770 に答える
0

XPath

/*/wsdl:message[fn:position() > 1 and fn:position() < fn:last()]

それをする必要があります。

編集

XPath 1.0(およびPHPのコード)の場合

<?php
$string = <<<XML
<?xml version="1.0" encoding="utf-8"?>
<root xmlns:wsdl="/">
    <wsdl:message> 
      One
    </wsdl:message> 
    <wsdl:message> 
      Two 
    </wsdl:message> 
    <wsdl:message> 
      Three 
    </wsdl:message> 
    <wsdl:message> 
      Four 
    </wsdl:message> 
    <wsdl:message> 
      Five 
    </wsdl:message> 
    <wsdl:message> 
      Six 
    </wsdl:message>
</root>
XML;

print $string;
$xml = new SimpleXMLElement($string);

print_r($xml->xpath('/*/wsdl:message[position() > 1'.
                    ' and position() < last()]'));

?>
于 2012-07-17T18:25:53.293 に答える