2015-07-22 58 views
0

你好,我有這樣的長XML字符串只保留值從長XML字符串

<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><CelsiusToFahrenheitResponse xmlns="http://www.w3schools.com/webservices/"><CelsiusToFahrenheitResult>77</CelsiusToFahrenheitResult></CelsiusToFahrenheitResponse></soap:Body></soap:Envelope> 

有沒有可能像這樣

<CelsiusToFahrenheitResponse> 
    <CelsiusToFahrenheitResult>77</CelsiusToFahrenheitResult> 
</CelsiusToFahrenheitResponse> 
<soap:body></soap:body>之間移除一切(包括所有的xmlns屬性),但部分

如果新行或標識不可能,那也可以。

回答

0

引入nokogiri的xpath來救援?

require 'nokogiri' 
xml = '<?xml version="1.0" encoding="utf-8"?><soap:Enve....' 
xxml = Nokogiri::XML.parse xml 
xxml.xpath('//soap:Body/*').to_s 
#⇒ "<CelsiusToFahrenheitResponse ..." 
+0

〜DOC =引入nokogiri :: XML(「 77')〜〜xml_str = doc。 remove_namespaces!.xpath('// Body/*')。to_s〜這對我有​​用 –

0

doc = Nokogiri::XML('<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><CelsiusToFahrenheitResponse xmlns="http://www.w3schools.com/webservices/"><CelsiusToFahrenheitResult>77</CelsiusToFahrenheitResult></CelsiusToFahrenheitResponse></soap:Body></soap:Envelope>') xml_str = doc.remove_namespaces!.xpath('//Body/*').to_s

這帶來期望的結果

<CelsiusToFahrenheitResponse> 
    <CelsiusToFahrenheitResult>77</CelsiusToFahrenheitResult> 
</CelsiusToFahrenheitResponse>