使用PHP解析格式错误的XML

时间:2016-09-01 10:54:02

标签: php xml

我有一个Web应用程序,一个人将Datamatrix条形码扫描到一个表单中,然后通过post传递给该进程的下一部分。我无法控制条形码中包含的xml,因此只能在那里使用。 我无法将XML加载到simple_xml_loadstring:

以下是从条形码扫描的xml示例:

<xml><sc id="12345" ft="HS21" t="2016-08-31"/><pa l="MySurname" m="B" f="MyFirstName" s="Mr" h="1234567436" b="1995-03-23" x="2" a="97 the Town Road,Nowhere,My City" pc="RA 13762"/><pb i="4204" d="My Name" n="My Business " pi="Z008287783" a="Station Road,My Town, County, LAX 12344,028 45 67 89" pc=""/><dd d="Name of suff" q="120" sq="213325435436436" do="Directions" dm="425984002" u="80"/></xml>

这是我在接受表格中的POST的页面上的代码:

//get XML from previous form field 
$searchTerm = $_REQUEST['ScanItem'];
$xml = simplexml_load_string($searchTerm);

if ($xml === false) {
    echo "Failed loading XML: ";
    foreach(libxml_get_errors() as $error) {
        echo "<br>", $error->message;
    }
} else {
    print_r($xml);
}

我也尝试过使用:

$xml = file_get_contents('php://input');
        $decodedXML = urldecode($xml);

然后尝试回显$ decodingXML但是在ScanItem =

之后没有显示任何内容

真的很令人沮丧。

欢迎任何建议。

由于

1 个答案:

答案 0 :(得分:0)

您在寻找价值12345吗? 那你去吧..

<?php
$xml_string = '<xml><sc id="12345" ft="HS21" t="2016-08-31"/><pa l="MySurname" m="B" f="MyFirstName" s="Mr" h="1234567436" b="1995-03-23" x="2" a="97 the Town Road,Nowhere,My City" pc="RA 13762"/><pb i="4204" d="My Name" n="My Business " pi="Z008287783" a="Station Road,My Town, County, LAX 12344,028 45 67 89" pc=""/><dd d="Name of suff" q="120" sq="213325435436436" do="Directions" dm="425984002" u="80"/></xml>';
$xml = simplexml_load_string($xml_string);
$xml_id_to_sring = $xml->sc->attributes()->{'id'};
$json = json_decode(json_encode((array)$xml_id_to_sring));
print_r($json[0]);
?>

Eval Link for the answer