SimpleXML - HTML:普通文本中的元素
SimpleXML - HTML: element within common text
我正在使用 DOM -> SimpleXML:
解析文档 HTML
$dom = new DOMDocument();
$dom->loadHTML($this->resource->get());
$html = simplexml_import_dom($dom);
并想加载这篇文章:
<p>
Some text here <strong class="wanna-attributes-too">with strong element!</strong>.
But there can be even <b>bold</b> tag and many others.
</p>
然后我想做点什么然后导出;但是内部标签被解析为 <p>
的子节点 - 这在形式上是正确的,但我如何重建原始文档?是否有一些库可以处理文本值中的标签?
常见情况下浏览器怎么样?
谢谢
// p.s。我 CAN 解析文本中包含节点的文档,ISN'T 问题;问题是节点丢失了它们在原文中的位置
更新 v1.0
好的,解决方案可以是封装每个节点,同时具有节点和值。
更新后的问题可以是 - 如何从 simple_xml?
中获取 raw 节点值
从之前的 HTML 片段我想要这样的东西:
echo $nodeParagraph->rawValue;
输出将是
Some text here <strong class="wanna-attributes-too">with strong element!</strong>.
But there can be even <b>bold</b> tag and many others.
更新 v2.0
我的坏处 - SimpleXML 节点具有 saveXML(alis to asXML),它可以执行我想要的操作。对不起,噪音。当我构建工作测试时,我会 post 回答。
正如@jzasnake 指出的那样,很好的解决方案是这样做:
样本(输入):
<p>
Some text here <strong class="wanna-attributes-too">with strong element!</strong>.
But there can be even <b>bold</b> tag and many others.
</p>
这会在 DOM 中输出类似这样的内容:
- p
- 强
- b
其中文本的顺序不正确(如果您以后想重建它)。
解决方案可以将每个文本展开到它自己的节点中(注意 <value>
标签):
<p>
<value>Some text here </value><strong class="wanna-attributes-too">with strong element!</strong><value>.
But there can be even </value><b>bold</b><value> tag and many others.</value>
</p>
markup有点啰嗦,不过看看这个:
- p
- 价值
- 强
- 价值
- 价值
- b
- 价值
- 价值
所有内容都被保留,因此您可以按原样重建原始文档。
我正在使用 DOM -> SimpleXML:
解析文档 HTML$dom = new DOMDocument();
$dom->loadHTML($this->resource->get());
$html = simplexml_import_dom($dom);
并想加载这篇文章:
<p>
Some text here <strong class="wanna-attributes-too">with strong element!</strong>.
But there can be even <b>bold</b> tag and many others.
</p>
然后我想做点什么然后导出;但是内部标签被解析为 <p>
的子节点 - 这在形式上是正确的,但我如何重建原始文档?是否有一些库可以处理文本值中的标签?
常见情况下浏览器怎么样?
谢谢
// p.s。我 CAN 解析文本中包含节点的文档,ISN'T 问题;问题是节点丢失了它们在原文中的位置
更新 v1.0 好的,解决方案可以是封装每个节点,同时具有节点和值。
更新后的问题可以是 - 如何从 simple_xml?
中获取 raw 节点值从之前的 HTML 片段我想要这样的东西:
echo $nodeParagraph->rawValue;
输出将是
Some text here <strong class="wanna-attributes-too">with strong element!</strong>.
But there can be even <b>bold</b> tag and many others.
更新 v2.0 我的坏处 - SimpleXML 节点具有 saveXML(alis to asXML),它可以执行我想要的操作。对不起,噪音。当我构建工作测试时,我会 post 回答。
正如@jzasnake 指出的那样,很好的解决方案是这样做:
样本(输入):
<p>
Some text here <strong class="wanna-attributes-too">with strong element!</strong>.
But there can be even <b>bold</b> tag and many others.
</p>
这会在 DOM 中输出类似这样的内容:
- p
- 强
- b
其中文本的顺序不正确(如果您以后想重建它)。
解决方案可以将每个文本展开到它自己的节点中(注意 <value>
标签):
<p>
<value>Some text here </value><strong class="wanna-attributes-too">with strong element!</strong><value>.
But there can be even </value><b>bold</b><value> tag and many others.</value>
</p>
markup有点啰嗦,不过看看这个:
- p
- 价值
- 强
- 价值
- 价值
- b
- 价值
- 价值
所有内容都被保留,因此您可以按原样重建原始文档。