【问题标题】:php, extract data from a non-standard xml documentphp,从非标准的 xml 文档中提取数据
【发布时间】:2010-12-25 15:11:19
【问题描述】:

我有一些 xml 内容,我需要提取信息并将其存储到数据库中

<xml file="136000000-136100000">
<Id>136000000</Id>
<Name>Sem  Serxy</Na me>
<Email>ssunsdadi2sk@ya.ru</Email>
<DateRegistration>10/13/2010 1:49:30 AM</DateRegistration>
</xml>
<xml file="136000000-136100000">
<Id>136000001</Id>
<Name>God Deckor</Name>
<Email>deckor22s2001@yahoo.com</Email>

如果我尝试简单的 xml 加载不起作用,因为文档似乎不是有效的 xml。 我可以使用正则表达式通过 preg_match_all 提取信息,但我觉得这不是正确的方法,因为数据已经结构良好。还有其他方法吗?

【问题讨论】:

  • 请注意,如果它无效,则它实际上不是 XML。

标签: php xml


【解决方案1】:

尝试将其包装在根元素中。它看起来对我来说是有效的。

例如。像这样:

$xmlData = '<root>' . $xmlData . '</root>';

$xmlData 是一个包含您拥有的数据的字符串。

这样你应该能够使用 SimpleXML 或 PHP 中的其他 XML 库来加载它。

【讨论】:

  • 它仍然显示警告:simplexml_load_file() [function.simplexml-load-file]: 136000000-136100000.xml:7: 解析器错误:C:\wamp 中文档末尾的额外内容\www\index.php 第 3 行警告:simplexml_load_file() [function.simplexml-load-file]: in C:\wamp\www\index.php 第 3 行警告: simplexml_load_file() [function.simplexml-load-file]: ^ in C:\wamp\www\index.php 第 3 行
  • 除了@JaniHartikainen 提到的内容之外,还可以在开头添加&lt;?xml version="1.0" encoding="UTF-8" ?&gt;,然后将其包装在父节点中,然后进行解析。 (这是假设它至少遵循 &lt;xml file="xxx"&gt;...&lt;/xml&gt; 模式并且不会遗漏结束标签(就像您的 sn-p 所做的那样)并且 实际上 中没有 &lt;/Na me&gt; 标签)
  • 实际上,截取的代码是以完全相同的形式从 xml 文档中提取的,因此它具有 等
【解决方案2】:
$xml = simplexml_load_string('<root>' + $record->rows['ColumnName'] + '</root>');
$xmlelmId = $xml->xpath('/root/Id');
echo $xmlelmId[0];

【讨论】:

  • 你能告诉我$record是什么吗?
  • 对不起。我正在粘贴我的框架代码。应该是: while ($row = mysql_fetch_assoc($result)) { $xml = simplexml_load_string('' + $row['XmlDataColumnName'] + ''); $xmlelmId = $xml->xpath('/root/Id');回声 $xmlelmId[0]; }
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多