#perl #xpath #xml-parsing #xml-libxml
#perl #xpath #синтаксический анализ xml #xml-libxml
Вопрос:
Я всегда застреваю на некоторых логических вопросах, когда дело доходит до программирования. Я думаю, это логично и просто, но для меня сложно, поскольку я не могу туда добраться. Я использую XML :: LibXML для анализа XML-файлов. Теперь в следующем коде
<CommentsCorrectionsList>
<CommentsCorrections RefType="Cites">
<RefSource>Brain Cogn. 2005 Jul;58(2):245</RefSource>
</CommentsCorrections>
<CommentsCorrections RefType="RepublishedIn">
<RefSource>Brain Cogn. 2005 Jul;58(2):246-8</RefSource>
<PMID Version="1">16044513</PMID>
</CommentsCorrections>
<CommentsCorrections RefType="PartialRetractionOf">
<RefSource>Curr Opin Organ Transplant. 2001 Mar;6(1):95-101</RefSource>
</CommentsCorrections>
</CommentsCorrectionsList>
Я хочу выбрать commentscorrections для всех других RefType, кроме ‘Cites’. Как мне это сделать. Я думал сделать это, поместив все нужные типы ссылок в другую переменную, а затем используя ее для получения других данных. Правильно ли это, я пробовал с некоторыми фиктивными переменными, такими как следующие
my $sam = "A" || "B" || "C";
print "test= ";
my $test = <>;
if ($test == $sam) {
print $test;
print "success";} else {
print "NO";}
Я знаю, что это может показаться глупым для некоторых из вас, но я пишу программу примерно с месяца и иногда расстраиваюсь, потому что не знаю, что делать. Я пытаюсь многому научиться. Пожалуйста, простите меня, если это действительно глупый вопрос.
Кроме того, я подумал сделать
if(!($foo->findnodes('CommentsCorrectionList/CommentsCorrections[@RefType="Cites"]'))){
do foreach and get the data
}
Но в этом случае, как мне избежать RefType=»Cites» в foreach и сделать его равным другому RefType, который я хочу. Я имею в виду, что я не знаю, можно ли использовать такое логическое значение в операторе foreach . Я пытался найти, а также делал проб и ошибок, но ничего не получалось. Любая помощь приветствуется.
Спасибо.
Ответ №1:
CommentsCorrectionList/CommentsCorrections[@RefType != "Cites"]
Я лично использую спецификацию XPath в качестве ссылки, но там могут быть более дружественные ссылки.
Комментарии:
1. да .. это то, что вылетело у меня из головы. Спасибо за ссылку, это действительно помогает. Спасибо за ikegami.