嗨,我必須讀取一個 xml 檔案,在代碼的一部分中有一些欄位標簽,其名稱如示例中所述
<Fields>
<Field Name="JobId"><![CDATA[7096c681-3165-4137-95a3-4ae873af2132]]></Field>
<Field Name="isDeleted"><![CDATA[0]]></Field>
<Field Name="TopicId"><![CDATA[5870811]]></Field>
<Field Name="Type"><![CDATA[Document]]></Field>
<Field Name="CustomerId"><![CDATA[8063]]></Field>
<Field Name="DocumentType"><![CDATA[volopress_pdf]]></Field>
<Field Name="Inserted"><![CDATA[2021-01-02 08:47:51]]></Field>
<Field Name="pageNumber"><![CDATA[17]]></Field>
<Field Name="Position"><![CDATA[1]]></Field>
<Field Name="TAG_Source"><![CDATA[Cronache di Napoli]]></Field>
<Field Name="link_pdf"><![CDATA[http://www.pippo.com]]></Field>
<Field Name="TAG_Topic"><![CDATA[Terremoti]]></Field>
<Field Name="isValidSnippet"><![CDATA[True]]></Field>
</Fields>
我只想閱讀名稱為“link_pdf”的欄位
如果我使用此代碼
$alink = $rassegna->Fields->Field[23];
我可以讀取該值,但在某些情況下這不是一項好作業,我如何通過欄位名稱訪問該值?
$alink = $rassegna->Fields->Field['link_export'];
不行
uj5u.com熱心網友回復:
使用XPath選擇Field并應用一個謂詞限制到具有Name“link_export”屬性值的那些:
$xml = new SimpleXMLElement($string);
$result = $xml->xpath('/Fields/Field[@Name="link_export"]');
while(list( , $node) = each($result)) {
echo '/Fields/Field[@Name="link_export"]: ',$node,"\n";
}
uj5u.com熱心網友回復:
您可以通過一個xpath找到專案,不要遵循源xml的所有結構
$xml = simplexml_load_file('02012021.xml');
$result = $xml->xpath('//Field[@Name="link_pdf"]');
foreach($result as $node) {
echo "$node<br>\n";
}
uj5u.com熱心網友回復:
不幸的是,我必須遵循整個結構,因為除了那條記錄之外,我還必須閱讀其他記錄
<?php
$xml=simplexml_load_file("02012021.xml") or die("Error: Cannot create object");
$i=0;
foreach($xml->Reports->Report[1]->Hits[0]->children() as $rassegna) {
echo $rassegna->Order . "<br>";
echo $rassegna->DocumentReference . "<br>";
echo $rassegna->Title . "<br>";
echo $rassegna->Content . "<br>";
$alink = $xml->xpath('//Field[@Name="link_export"]');
echo $alink[$i] . "<br>";
echo "<a href='". $alink[$i] . "'> link </a>";
echo "<br/><br/>";
$i=$i 1;
}
?>
我用剛剛發布的解決方案解決了它
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/379723.html
