Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用SimpleXML读取最后一个标记ID_Php_Xml_Simplexml - Fatal编程技术网

Php 使用SimpleXML读取最后一个标记ID

Php 使用SimpleXML读取最后一个标记ID,php,xml,simplexml,Php,Xml,Simplexml,我需要将新标记附加到XML文件中,我可以使用以下代码实现这一点: $file = 'xml/config.xml'; $xml = simplexml_load_file($file); $galleries = $xml->examples; $gallery = $galleries->addChild('Example'); $gallery->addChild('ExampleID', '123'); $gallery->addChild('ExampleT

我需要将新标记附加到XML文件中,我可以使用以下代码实现这一点:

$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>

1.
这是文本
...
2.
这是第二个文本
...

您可以使用
XPATH
。这是解决办法

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

从&

获取的解决方案您可以使用XPath
last()
查找最后一个
元素,然后返回相应的
子元素:

//Example[last()]/ExampleID
或者,您可以找到最大的
示例ID
,如另一个答案中所述:

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

你能发布你的
xml
文件代码吗?我认为用代码很容易理解。我将发布一个示例。您能解释一下[0]吗?还有,我需要得到最后一个例子的ID,而不是第一个。你想要最大的例子ID对吗?这符合你的目的吗<代码>[0]是前0个索引的示例长度正是我获取最后一个示例所需的长度。如何获取它?Xpath表达式返回所有
Example
元素的节点列表,其中包含
ExampeId
,其同级节点(及其本身)不包含较大的
ExampeId
值。换句话说,它返回ExampleId子节点中值最大的
Example
节点。因为它是一个节点列表,所以结果是一个数组。如果此处没有节点,则它可能为空。
[0]
访问返回数组中的第一个元素。
$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