使用 PHP 从 HTML 列表生成 XML
Posted
技术标签:
【中文标题】使用 PHP 从 HTML 列表生成 XML【英文标题】:Generating XML from HTML list using PHP 【发布时间】:2011-06-20 08:33:28 【问题描述】:我想把列表结构转换成html:
<ul>
<li>Section 1</li>
<li>Section 2
<ul>
<li>Section 2.1</li>
<li>Section 2.2</li>
</ul>
</li>
<li>Section 3</li>
</ul>
像这样进入 XML:
<sections>
<section>
<caption>Section 1</caption>
<level>0</level>
</section>
<section>
<caption>Section 2</caption>
<level>0</level>
</section>
<section>
<caption>Section 2.1</caption>
<level>1</level>
</section>
<section>
<caption>Section 2.2</caption>
<level>1</level>
</section>
<section>
<caption>Section 3</caption>
<level>0</level>
</section>
</sections>
我尝试使用 php SimpleXML 读取 html,但是当它在 <li>
标记内遇到 <ul>
标记时似乎有问题。
我想知道是否有人可以建议用 PHP 完成这项工作的最简单方法是什么?
非常感谢大家。
【问题讨论】:
您考虑过使用 XSLT 吗?这正是它的作用。 我认为 SimpleXML 的问题在于<li>Section 2...
处的文本和其他元素的混合
【参考方案1】:
您总是可以将 HTML 解析为您的 XML 结构。像这样的:
假设您的 HTML 位于名为“sections.html”的页面中。这是您可以做您想做的事情的一种方式:
<?php
# Create new DOM object
$domOb = new DOMDocument();
# Grab your HTML file
$html = $domOb->loadHTMLFile(sections.html);
# Remove whitespace
$domOb->preserveWhiteSpace = false;
# Set the container tag
$container = $domOb->getElementsByTagName('ul');
# Loop through UL values
foreach ($container as $row)
# Grab all <li>
$items = $row->getElementsByTagName('li');
# echo the values
echo $items->item(0)->nodeValue.'<br />';
echo $items->item(1)->nodeValue.'<br />';
echo $items->item(2)->nodeValue;
# You could write to your XML file, store in a string, anything here
?>
我没有对此进行测试,但这是一般的想法。
希望这会有所帮助。
【讨论】:
以上是关于使用 PHP 从 HTML 列表生成 XML的主要内容,如果未能解决你的问题,请参考以下文章
生成将使用 XMLWriter 生成目标 XML 的 PHP 代码