Я искал SO и нашел некоторые ответившегоИспользование SimpleXML для выбора содержимого одного узла с помощью атрибута
xpath-how-to-select-a-node-by-its-attribute
simplexml-get-element-content-based-on-attribute-value
и
simplexml-selecting-elements-which-have-a-certain-attribute-value
, но все они не помогли меня с моей проблемой. Возможно, проблема была схожей, но это было не то же самое, так что она ничего не решила.
Как вы можете видеть в заголовке, я хочу выбрать содержимое определенного узла.
Во-первых, здесь образец XML тот похож на XML, я использую:
<?xml version="1.0" encoding="utf-8"?>
<translation>
<home>
<button name="aaa">Hello</button>
<button name="bbb">World</button>
</home>
<office>
<button name="ccc">Foo</button>
<button name="ddd">Bar</button>
<string name="xxx">Sample</string>
</office>
<translation>
Так что я на самом деле хочу для того чтобы достигнуть, чтобы использовать мой XML выбрать как PHP ассоциативный массивов. Что-то вроде этого:
$xml->home->button["aaa"];
или может больше, как XPath:
$xml->home->button['@name="aaa"'];
оба должны вернуться Hello
, но все, что я пытаюсь в конечном итоге с объектом атрибута (отсутствует содержание на всех) или пустой возврат.
Я пробовал:
$xml = simplexml_load_file("my.xml");
//1)
$data = $xml->xpath('//home[button[@name="aaa"]]');
//what simply gives me an array of all buttons and they can be accessed by its id
//2)
$data = $xml->xpath('//home/button[@name="aaa"]');
//what gives me the expacted node but not the content and even the
//print_r or var_dump doesnt show me the content anymore
Я попробовал посмотреть больше вещей, которые на самом деле все в конечном итоге без результата.
Что я могу сделать для достижения своей цели?
OMG, тратить так много времени с этим и в конце ее просто '[0]', который решает Everyting .. .. grrrrr: D Большое спасибо. Я приму это, как только это станет возможным. – Dwza