您好我有这个长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>
是否可以删除所有内容(包括所有xmlns属性),但是<soap:body></soap:body>
之间的部分可以删除
<CelsiusToFahrenheitResponse>
<CelsiusToFahrenheitResult>77</CelsiusToFahrenheitResult>
</CelsiusToFahrenheitResponse>
如果不可能有新的行或标识也可以。
答案 0 :(得分: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 ..."
答案 1 :(得分: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>