2016-05-16 3 views
1

Мне нужно добавить новые теги в файл XML, и я могу добиться этого с помощью этого кода:Использование SimpleXML для чтения последнего тега ID

$file = 'xml/config.xml'; 

$xml = simplexml_load_file($file); 

$galleries = $xml->examples; 

$gallery = $galleries->addChild('Example'); 
$gallery->addChild('ExampleID', '123'); 
$gallery->addChild('ExampleText', 'this is text'); 
$gallery->addChild('ExampleDate', '23/12/1234'); 

$xml->asXML($file); 

Моя проблема заключается в ID.
В основном мне нужно получить последний ExampleID и прирастить его в новый тег Example.

Как я могу это достичь?

Редактировать

Это XML структура:

<Examples> 
    <Example> 
    <ExampleID>1</ExampleID> 
    <ExampleText>this is text</ExampleText> 
    ... 
    </Example> 
    <Example> 
    <ExampleID>2</ExampleID> 
    <ExampleText>this is the secont text</ExampleText> 
    ... 
    </Example> 
</Examples> 
+0

Вы можете разместить свой 'код файла xml'? –

+0

Я думал, что это легко понять с помощью кода. Я отправлю пример. –

ответ

0

Вы можете использовать XPath last(), чтобы найти последний <Example> элемент, а затем возвращают соответствующий <ExampleID> ребенка:

//Example[last()]/ExampleID 

В качестве альтернативы, вы можете найти максимум ExampleID, как указано в другом ответе:

//ExampleID[not(. < //ExampleID)] 

Demo: (eval.in)

$raw = <<<XML 
<Examples> 
    <Example> 
    <ExampleID>1</ExampleID> 
    <ExampleText>this is text</ExampleText> 
    ... 
    </Example> 
    <Example> 
    <ExampleID>2</ExampleID> 
    <ExampleText>this is the secont text</ExampleText> 
    ... 
    </Example> 
</Examples> 
XML; 
$xml = simplexml_load_string($raw); 
$lastID = (string)$xml->xpath("//Example[last()]/ExampleID")[0]; 
echo $lastID; 

Выход:

2 
+0

Я попробую это после решения проблемы с WAMP. –

+0

Я могу получить последний() ID, спасибо! –

1

Вы можете использовать XPATH. Вот решение.

(string)$xml->xpath("//Examples/Example[not(../Example/ExampleID > ExampleID)]")[0]->ExampleID 

Решение взяты из http://php.net/manual/en/simplexmlelement.xpath.php & https://stackoverflow.com/a/3786761

+0

Можете ли вы объяснить [0]? А также мне нужно получить идентификатор последнего примера, а не первый. –

+0

Вам нужен идентификатор максимального примера? Это служит вашей цели? '[0]' для первого 0-индекса –

+0

Длина примера - это именно то, что мне нужно, чтобы получить последний пример. Как я могу его получить? –

Смежные вопросы