我有一些简单的XML,我想在PHP中解析成一个数组,以便我可以构建一些动态SQL插入。
示例XML:
<Data>
<Key>1</Key>
<Column>Value 1</Column>
<Column2>Value 2</Column>
</Data>
数据将通过http POST传递给PHP。
最简单的方法是什么?应始终有一个实例,但希望从一个POST中获取多个实例。
我当然可以构建一些代码来解析特定的PHP,但是我想使用一段代码来动态处理数据,以便它可以用来为多个表创建插入。
答案 0 :(得分:4)
好吧,假设您想要
的结果array(
1 => array(
'Value 1',
'Value 2',
)
)
假设
的结构<root>
<Data>
<!-- key and column entities -->
</Data>
<Data>
<!-- key and column entities -->
</Data>
<Data>
<!-- key and column entities -->
</Data>
</root>
你可以做点什么(我更喜欢DomDocument):
$dom = new DomDocument();
$dom->loadXml($xmlString);
$dataElements = $dom->getElementsByTagName('Data');
$array = array();
foreach ($dataElements as $element) {
$subarray = array();
foreach ($element->childNodes as $node) {
if (!$node instanceof DomElement) {
continue;
}
$key = $node->tagName;
$value = $node->textContent;
$subarray[$key] = $value;
}
$array[] = $subarray;
}
通过该编辑,它将转为:
<root>
<Data>
<Key>4</Key>
<Foo>Bar</Foo>
</Data>
<Data>
<Key>6</Key>
<Bar>Baz</Bar>
</Data>
</root>
分为:
array(
array(
'Key' => 4,
'Foo' => 'Bar',
),
array(
'Key' => 6,
'Bar' => 'Baz',
),
)
答案 1 :(得分:1)
SimpleXML是您要搜索的库的名称:http://php.net/manual/en/book.simplexml.php