使用

2011-12-27 10 views
1

私は、XMLを解析しようとしていますが、それを解析する前に、私は、.NETのRegex.Replaceメソッドを使用して、そこからいくつかのunnecassary属性を掃除しています。使用

これは、これは私がこれは出力

<SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> 
<SOAP-ENV:Body> 
<ns1:loginResponse> 
    <loginReturn xsi:type="xsd:string">asdsadsadasdas2321312dasdasdas21asdas</loginReturn> 
    </ns1:loginResponse> 
    </SOAP-ENV:Body> 
    </SOAP-ENV:Envelope> 

012で正規表現

xmlns:[a-zA-Z\d-=":\/\.]+ 

のために書いたものである私の入力

<?xml version="1.0" encoding="UTF-8" ?> 
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="urn:Magento" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> 
<SOAP-ENV:Body> 
<ns1:loginResponse> 
    <loginReturn xsi:type="xsd:string">asdsadsadasdas2321312dasdasdas21asdas</loginReturn> 
    </ns1:loginResponse> 
    </SOAP-ENV:Body> 
    </SOAP-ENV:Envelope> 

です

Found 5 matches: xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="urn:Magento" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" String literals for use in programs: C# @"xmlns:[a-zA-Z\d-="":\/\.]+" 

、これは希望出力

<SOAP-ENV:Envelope> 
<SOAP-ENV:Body> 
<ns1:loginResponse> 
    <loginReturn>asdsadsadasdas2321312dasdasdas21asdas</loginReturn> 
    </ns1:loginResponse> 
    </SOAP-ENV:Body> 
    </SOAP-ENV:Envelope> 

である私は

xmlns?xsi?[a-zA-Z\d-=":\/\.]+ 

のようなものを試してみましたが、それは仕事をdoesntの。とにかくSOAP-ENVで始まる属性を解決することもできないようです。

ありがとうございました。

+0

あなたの質問は何ですか? – Oded

+2

これにXMLパーサーを使用していないのはなぜですか? – Oded

+1

なぜXMLパーサを使用できないのですか? –

答えて

1

これを正規表現で試してみてください。これで、あなたが望む出力が得られるかもしれません。

(xmlns:| SOAP-|xsi:)[\w-=":\/\.]+ 

疑問符はオプションであり、あなたのケースでは、前の文が唯一の」を行い、 'I' のオプション

xmln のでしょうか?XS ?[-はZa - Z \ D - = ":/] +あなたがxmlnを作ることを意図した場合

xsiタグがあなたの正規表現は、この

(xmlns)?(xsi)?[a-zA-Z\d-=":\/\.]+ 
のようになりますオプション。

これは、正規表現がすべて[a-zA-Z\d-=":\/\.]+の部分をキャプチャするので、多くをキャッチします

0

疑問符は正規表現で特別な意味を持ちます。あなたが実際のXmlElementに文字列の入力を変換してから、「いるencodingStyle」属性を削除するXmlElement.RemoveAttributeメソッドを使用してみてください、あなたさがすに

xmlns\?xsi\?[a-zA-Z\d-=":\/\.]+ 
1

をそれらを使用したい場合はそのように疑問符をエスケープしてみてください。