PHP XML读取多个节点
我有一个如下所示的xml。如何解析这个?我不知道该怎么做? 奥泽利克和德格有时不同5,有时不同10。请帮帮我PHP XML读取多个节点,php,xml,Php,Xml,我有一个如下所示的xml。如何解析这个?我不知道该怎么做? 奥泽利克和德格有时不同5,有时不同10。请帮帮我 <?xml version="1.0" encoding="UTF-8"?> <ROOT> <STOKLAR> <STOK> <SKU>1234</SKU> <OZELLIKLER> <OZELL
<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
<STOKLAR>
<STOK>
<SKU>1234</SKU>
<OZELLIKLER>
<OZELLIK>Ekran Kartı Belleği </OZELLIK>
<DEGER>Paylaşımlı </DEGER>
</OZELLIKLER>
</STOK>
<STOK>
<SKU>1454</SKU>
<OZELLIKLER>
<OZELLIK>İşlemci Üreticisi </OZELLIK>
<DEGER>Intel </DEGER>
<OZELLIK>İşlemci Tipi </OZELLIK>
<DEGER>Intel Core i5 </DEGER>
</OZELLIKLER>
</STOK>
</STOKLAR>
</ROOT>
1234
埃克兰·卡尔特·贝勒奥伊
佩拉
1454
莱姆西·雷迪西
英特尔
勒姆奇·蒂皮
英特尔酷睿i5
使用DOM和Xpath表达式并不难:
$document = new DOMDocument();
$document->loadXML($xml);
$xpath = new DOMXpath($document);
// iterate STOK element nodes
foreach ($xpath->evaluate('/ROOT/STOKLAR/STOK') as $stok) {
// fetch first SKU child element node as string
var_dump($xpath->evaluate('string(SKU)', $stok));
// iterate OZELLIK element nodes in OZELLIKLER
foreach ($xpath->evaluate('OZELLIKLER/OZELLIK', $stok) as $ozellik) {
var_dump(
// content of current OZELLIK
$ozellik->textContent,
// first following sibling element node, if DEGER, as string
$xpath->evaluate('string((./following-sibling::*)[1][self::DEGER])', $ozellik)
);
}
}
输出:
string(4) "1234"
string(22) "Ekran Kartı Belleği "
string(14) "Paylaşımlı "
string(4) "1454"
string(21) "İşlemci Üreticisi "
string(6) "Intel "
string(15) "İşlemci Tipi "
string(14) "Intel Core i5 "
DOMXpath::evaluate()
可以根据表达式返回节点列表或标量值。第二个参数设置表达式的上下文节点。下面是最后一个(最复杂)表达式的说明:
- 获取以下同级元素节点
以下同级::*
- 限制到第一个找到的节点(以下同级节点::*)[1]
- 按节点名DEGER筛选
(以下同级::*)[1][self::DEGER]
- 返回此节点的文本内容,如果未找到节点,则返回空字符串
字符串((以下同级::*)[1][self::DEGER])
默认情况下,表达式在“子”轴上工作。表达式使用另外两个轴“跟随兄弟”和“self”来查找所需的节点。是ozellik和deger对吗?是的,一个ozellik和一个deger pairIt很奇怪,它们没有包装在另一个标记中。如果可以修改XML的结构,我建议这样做。顺便问一下,你的目标是什么?它来自公司,这就是为什么我不能修改你想要的产出的原因?