使用 PHP DOM - XPATH 解析 XML 标签而不丢失内部标签和数据

发布于 2024-12-14 08:01:43 字数 756 浏览 1 评论 0原文

我想解析类似于以下内容的数据:

<table-wrap id ="T1">
<table-wrap-foot>
<fn>
<p>
Blah blah blah <strong>dsf</strong> blah blah blah <br>
</p>
</fn>
<table-wrap-foot>
<table-wrap>

当我调用时,

$x = $xpath->query("//table-wrap-foot[@id='" . $tableAttributes . "']/p")->item(0);

我将获取段落的节点,包括内部的标签和数据以及

标签。

$x = $xpath->query("//table-wrap-foot[@id='".$tableAttributes."']/p")->item(0)->nodeValue;

我将获取标签内的数据

,但它不包含 标签。

所以我的要求是我需要数据以及内部标签,不包括

< /代码> 标签。

有可能这样做吗?

I want to parse data which looks similar to the following:

<table-wrap id ="T1">
<table-wrap-foot>
<fn>
<p>
Blah blah blah <strong>dsf</strong> blah blah blah <br>
</p>
</fn>
<table-wrap-foot>
<table-wrap>

When I call

$x = $xpath->query("//table-wrap-foot[@id='" . $tableAttributes . "']/p")->item(0);

I'll get the node of paragraph including tags and data inside along with the <p> tags.

$x = $xpath->query("//table-wrap-foot[@id='".$tableAttributes."']/p")->item(0)->nodeValue;

I'll get the data inside the

tags but it doesn't contain <strong> tag..

So my requirement is I need data along with tags inside excluding the <p> tags.

Is there any possibility to do that?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

无敌元气妹 2024-12-21 08:01:43

您只需选择 p 元素的 node() 子元素并迭代列表即可。以表面值为例(尽管它与示例输入不匹配):

//table-wrap-foot[@id='".$tableAttributes."']/p/node()

请注意,有五个这样的节点:

#text 
strong
#text 
br
#text

更合适的是选择这些文本和元素节点的并集:

//table-wrap-foot[@id='".$tableAttributes."']/p/*|
//table-wrap-foot[@id='".$tableAttributes."']/p/text()

You could simply select the node() children of your p element and iterate the list. Taking your example expression at face value (although it doesn't match up to your sample input):

//table-wrap-foot[@id='".$tableAttributes."']/p/node()

Note that there are five such nodes:

#text 
strong
#text 
br
#text

Even more appropriate would be to select the union of these text and element nodes:

//table-wrap-foot[@id='".$tableAttributes."']/p/*|
//table-wrap-foot[@id='".$tableAttributes."']/p/text()
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文