从PHP中删除字符串XML标记的属性

时间:2016-08-23 13:10:34

标签: php json xml parsing

我有一个XML字符串,在删除时遇到一个问题: ok \" =""  来自XML Tag的属性 我的XML代码是

<qbxml>\n<qbxmlmsgsrs>\n<companyqueryrs statuscode="\&quot;0\&quot;" statusseverity="\&quot;Info\&quot;" statusmessage="\&quot;Status" ok\"="">\n<companyret>\n<issamplecompany>false</issamplecompany>\n<companyname>Cougar Enterprises Hosted</companyname>\n<legalcompanyname>COFAUD</legalcompanyname>\n<address>\n<addr1>69 Smart Street</addr1>\n<city>Melbourne</city>\n<state>VIC</state>\n<postalcode>3001</postalcode>\n</address>\n<addressblock>\n<addr1>69 Smart Street</addr1>\n<addr2>Melbourne, VIC 3001</addr2>\n</addressblock>\n<legaladdress>\n<addr1>IDEV</addr1>\n<addr2>PLGPAUG15ANZ</addr2>\n<city>COF0058</city>\n</legaladdress>\n<phone>03 9854 1222</phone>\n<fax>03 9854 1223</fax>\n<email>Accounts@cougar.com.au</email>\n<companywebsite>www.cougar.com.au</companywebsite>\n<firstmonthfiscalyear>July</firstmonthfiscalyear>\n<firstmonthincometaxyear>July</firstmonthincometaxyear>\n<ein>98 765 432 154/</ein>\n<taxform>OtherOrNone</taxform>\n</companyret>\n</companyqueryrs>\n</qbxmlmsgsrs>\n</qbxml>

当我试图解析它时,它给了我一个问题: 无法格式化JSON输出。属性名称&#34;确定&#34;与元素类型相关联&#34; companyqueryrs&#34;必须遵循&#39; =&#39;字符。

我尝试使用 str_replace 和Regex,但无法查找结果。 我正在检查此转换 http://www.freeformatter.com/xml-to-json-converter.html

如果我从XML字符串中手动删除确定\&#34; =&#34;&#34; ,那么它会给我正确的结果但是从脚本我无法删除这个。 你能建议吗? 谢谢

1 个答案:

答案 0 :(得分:1)

您可以尝试这种方式:

 $string = '
<qbxml>\n<qbxmlmsgsrs>\n<companyqueryrs statuscode="\&quot;0\&quot;"  statusseverity="\&quot;Info\&quot;" statusmessage="\&quot;Status" ok\"="">\n<companyret>\n<issamplecompany>false</issamplecompany>\n<companyname>Cougar Enterprises Hosted</companyname>\n<legalcompanyname>COFAUD</legalcompanyname>\n<address>\n<addr1>69 Smart Street</addr1>\n<city>Melbourne</city>\n<state>VIC</state>\n<postalcode>3001</postalcode>\n</address>\n<addressblock>\n<addr1>69 Smart Street</addr1>\n<addr2>Melbourne, VIC 3001</addr2>\n</addressblock>\n<legaladdress>\n<addr1>IDEV</addr1>\n<addr2>PLGPAUG15ANZ</addr2>\n<city>COF0058</city>\n</legaladdress>\n<phone>03 9854 1222</phone>\n<fax>03 9854 1223</fax>\n<email>Accounts@cougar.com.au</email>\n<companywebsite>www.cougar.com.au</companywebsite>\n<firstmonthfiscalyear>July</firstmonthfiscalyear>\n<firstmonthincometaxyear>July</firstmonthincometaxyear>\n<ein>98 765 432 154/</ein>\n<taxform>OtherOrNone</taxform>\n</companyret>\n</companyqueryrs>\n</qbxmlmsgsrs>\n</qbxml>';


 $string=str_replace('ok\"=""',"",$string);
 print_r($string);