解析XML状数据
问题描述:
我与XML的数据等的字符串:解析XML状数据
<header>Article header</header>
<description>This article is about you</description>
<text>some <b>html</b> text</text>
我需要将其解析为变量/对象/阵列“头”,“描述”,“文本”。
这样做的最好方法是什么?我试过$vars = simplexml_load_string($content)
,但它不起作用,因为它不是100%纯xml(没有<?xml...
)。
那么,我应该使用preg_match
?这是唯一的方法吗?
答
您的XML字符串看起来像(尽管可能或不可能)XML文档片段。 PHP可以使用DOMDocumentFragment
类来处理这个问题。
$doc = new DOMDocument;
$frag = $doc->createDocumentFragment();
$frag->appendXML($content);
$parsed = array();
foreach ($frag->childNodes as $element) {
if ($element->nodeType === XML_ELEMENT_NODE) {
$parsed[$element->nodeName] = $element->textContent;
}
}
echo $parsed['description']; // This article is about you
答
用这样的字符串,simlexml_load_string应该可以工作。
由于第三标签,如果你设法得到它会失败,而不是返回正确的值(因为在标签内的子部分。
尝试这样的事情,这可能会为工作你:
$xml = simplexml_load_string($content)
$text = $xml->text->asXML();
你也应该看看这个文件:http://www.php.net/manual/en/simplexmlelement.asxml.php他们也做同样的事情用字符串你可能想使用此选项,而不是simplexml_load_string
太
$xml = new SimpleXMLElement($string);
。 210
+0
'simplexml_load_string'在没有''或顶层元素时抛出错误。 'SimpleXMLElement'可能是要走的路。 – Qiao
尝试DOM文档 – usoban
究竟是什么不起作用? –
这不是xml。所以'simplexml'不起作用。 – Qiao