PHP XML Проблема - дефис в имени элемента

Я играл с PHP и веб-сервисов в последнее время. Поскольку у меня не узнаете PHP с нуля, я просто пытался собрать мой код базы, на примерах, которые я собрал. Одна из проблем, озадачил меня в течение долгого времени. Я не разобрался, в чем проблема, пока я не переписал программу в PowerShell.

Я использовал простой XML для разбора XML-документа. Есть несколько ссылок в этом документе. Я повторного ссылки массив распечатать информацию. Проблема в том, я могу распечатать некоторые элементы, но не другие. Например, это работает:

  Эхо $ ссылке-> описания;

Тем не менее, это не работает:

  Эхо $ ссылке-> Link-код HTML;

Я работал над этой конкретной проблемы в течение дня, но я не мог понять, что случилось. Трудно отладки с помощью PHP, так что я решил использовать PowerShell переписать программу и посмотреть, если я могу повторить тот же «ошибки». Я действительно получил такой же проблемой. В PowerShell, точечная нотация используется и я не могу распечатать, либо:

  Эхо $ link.link-кода HTML-

Позже я узнал, что дефиса интерпретируется как знак минус. Я должен был изменить код PowerShell:

  Эхо $ link.Item ('ссылка-кода HTML-')

С этой информацией в виду, я знаю, дефис в имени элемента XML является причиной. Электронное руководство по PHP SimpleXML имеет один пример . Итак, мой исходный код должен быть изменен, чтобы

  Эхо $ ссылке-> {'ссылка-кода HTML-'};

HTA: процесс проверки Пример

Microsoft имеет менее известная технология называется HTA (HTML Application). В основном, это дает скрипты GUI интерфейсом использованием HTML обозначений. Я знал HTA в течение многих лет, но я никогда не обойти, чтобы попробовать его. Пока я думал о написании сценария для проверки запущенных процессов на компьютере, я думал, что будет хорошо, если я могу написать его, используя HTA. Вот мой эксперимент.

Как системный администратор, я часто нужно проверить машину пользователя на наличие вредоносных программ. Ручной процесс, как это. Я открываю диспетчер задач и искать ничего я не знаком. Когда я определить те подозрительные процессы, я затем открыть веб-браузер для проверки процессов. Два участка я использую регулярно, ProcessLibrary.com и Google. Мне нужно, чтобы войти в процесс имя вручную, и весь процесс утомительный.

Идея заключается в следующем, я хочу написать простой скрипт, чтобы получить список всех процессов, запущенных на компьютере. Я хочу представить результаты в таблицу HTML со ссылками на ProcessLibrary и Google. Если мне нужно проверить конкретный процесс, я просто нажмите на соответствующую ссылку без ручного ввода имени процесса.

Прежде, чем я начал писать сценарий, я нашел один скрипт из ScriptingGuys на MSN групп. Оригинальный сценарий показывает процессы, запущенные на локальном компьютере. Я изменил его так, что он может проверить удаленных компьютерах, и я также добавлены ссылки, чтобы найти информацию о процессе ProcessLibrary.com и Google.

Вот ссылка на сценарий. Процесс проверки сценарий HTA WordPress.com не позволяет загрузить из. HTA файл, так что файл был загружен в виде файла документ Word с расширением. Док. Нажмите на ссылку и сохраните файл как checkprocess.doc. Тогда измените название на checkprocess.hta, и вы готовы попробовать.

Чтобы запустить его, дважды щелкните по файлу, как и другие приложения. Она открывает окно, как это.

processcheck1.jpg

Вы можете ввести имя удаленного компьютера в текстовом поле, или вы можете просто нажать кнопку Выполнить скрипт для проверки локального компьютера. Затем заполнить нижней части окна с процессами.

processcheck2.jpg

Чтобы проверить определенный информационный процесс, нажмите на ссылки для поиска рядом с ним. Приложение будет воспитывать браузер с результатами поиска.

processcheck3.jpg

PowerShell Пример: проверка PS3 Наличие на Amazon

Я использовал PowerShell скрипт для проверки цены Garmin i3 на Амазонке. Это очень легко изменить его, чтобы проверить наличие PS3. Когда PS3 не доступна, цена от запроса составляет $ 0,00. Так, если цена будет больше 0, что означает, что это доступно. Затем сценарий готовит письмо с ссылкой для его приобретения.

Вам нужно изменить имя сервера SMTP ($ SmtpServer), Ваш адрес электронной почты (e-mail $) и AWSAccessKeyId ($ awskey). Если вы не знаете, как получить AWSAccessKeyId, вы можете проверить мой оригинальный пост для Garmin i3. По умолчанию, чтобы проверить модель с 60GB HD. Раскомментируем второго $ ASIN проверить модель с 20GB HD.

После того как вы проверить работу скрипта, с вашими изменениями, используйте ваш любимый планировщик, чтобы проверить наличие регулярно.

  # Скрипт для проверки PS3 на Amazon 
  SmtpServer $ = "smtp.nospam.com"



 E-mail $ = "someone@nospam.com"



 Awskey $ = "Ваш-AWSAccessKeyId"



 $ ASIN = "B0009VXAM0" # 60 Гб



 # $ ASIN = "B000IZWNLG" # 20GB 
  $ URL = "http://webservices.amazon.com/onca/xml?Service=AWSECommerceService"



 + $ URL = "& AWSAccessKeyId =" + $ awskey



 + $ URL = "& Operation = ItemLookup"



 + $ URL = "& Itemid =" + $ ASIN



 + $ URL = "& = ResponseGroup Предложения"



 $ Rxml = [XML] (New-Object Net.WebClient). DownloadString ("$ URL")



 $ Цена = $ rxml.ItemLookupResponse.Items.Item.Offers.Offer.OfferListing.Price.Amount



 $ Цена = $ price/100



 если ($ Цена GT-0) {



     TextBody $ = "Playstation 3 теперь $" + $ + цена "на Амазонки"



     $ TextBody + = "http://www.amazon.com/exec/obidos/ASIN/" + $ ASIN + "/ = animereviews-20/ref Носим"



     $ SMTP = New-Object Net.Mail.SmtpClient ($ SmtpServer)



     Smtp.send $ ($ e-mail, $ электронной почте, "PS3 доступна на Amazon!", $ TextBody)



 } 

PowerShell и Amazon Web Service

Я получил некоторые опыты с веб-сервиса Amazon, когда я создал свой ​​аниме Отзывы сайта. Это довольно опрятно, что вы можете написать запрос, чтобы найти очень подробную информацию о продукте. Недавно, я имею в виду купить Garmin StreetPilot i3 из Амазонки.

i3.jpg

Обычная цена составляет около $ 308,00, но я слышал, что иногда Amazon бы снизить цену до по цене от $ 199,00. Однако низкая цена доступна только в течение короткого времени. Я не хочу сидеть перед своим компьютером и вручную проверьте цену себе. Не было бы неплохо, если бы у меня может быть сценарий, чтобы проверить цены автоматически? Было бы лучше, если я буду писать сценарий с помощью PowerShell!

Хорошо, достаточно бессвязное. Давайте начнем. Для использования веб-служб Amazon, первое, что нужно сделать, это зарегистрироваться и получить свой собственный Access Key ID. Вы можете создать бесплатную учетную запись здесь .

После того, как счет был успешно создан, вы можете войти на сайт с новой учетной записи. Наведите курсор мыши на верхнюю часть кнопки с надписью "Ваш Web Services счет". Выпадающее меню будет появляться, нажмите "Просмотр идентификаторов ключей доступа". Есть два ключа, один называется "Access Key ID", другие называют "Секретный ключ доступа". Запишите идентификатор ключа доступа, это ключ, использованный для веб-службы. Следующим шагом является отправка секретной Access Key для меня. :-) Ладно, шучу. Вы не должны делиться секретного ключа доступа с кем угодно, он используется только для создания подписи. Вы должны держать его конфиденциальность и не раскрывать его никому.

Amazon Web Service предлагает несколько способов поиска информации о продукте. ItemSearch используется для поиска продуктов с помощью ключевых слов. Так как мы уже знаем, продукт, который нас интересует, мы можем просто использовать ItemLookup. Для использования ItemLookup, необходимо два вида информации, и AWSAccessKeyId ItemId. У вас уже есть ID Access Key, все, что вам нужно знать, ItemId для продукта. Каждый продукт предлагается на Amazon имеет уникальный идентификатор. Если вы посмотрите на странице продукта, это называется ASIN. Вы можете использовать как ASIN ItemId для запроса. По запросу книги, пользоваться ISBN ItemId как в запросе. Это строка запроса для поиска информации для Garmin i3.

  $ URL = "http://webservices.amazon.com/onca/xml?Service=AWSECommerceService"

 + $ URL = "& AWSAccessKeyId = Your_AccessKeyID_Here"

 + $ URL = "& Operation = ItemLookup"

 + $ URL = "& Itemid = B000ACHVVE"

 + $ URL = "& = ResponseGroup Предложения" 

Отметим, что это для Северной Америки www.amazon.com. Если вы хотите запросить информацию о продукте для других сайтов Amazon. Вам нужно изменить первую строку соответственно. Вы можете проверить здесь для получения информации о том, как изменить строку запроса. Следует также отметить, что если Вы не укажете ResponseGroup в запросе, по умолчанию ответ "Запрос" и "Малый", которые не имеют информации о ценах. Для получения текущей цены, мы используем "Предложения", как ответ группы. Наконец, мы используем Net.WebClient класса. Чистая, чтобы получить ответ от веб-сервиса Amazon. Ответ от сервера является XML строку. Мы можем привести его к XMLDocument для легкого доступа к данным. Количество возвращаемых запросом в центах, поэтому разделить его на 100, чтобы получить сумму в долларах.

 $ Rxml = [XML] (New-Object Net.WebClient). DownloadString ("$ URL") $ = цена $ $ rxml.ItemLookupResponse.Items.Item.Offers.Offer.OfferListing.Price.Amount цена = $ price/100 Эхо $ цене 

Вы можете спросить, как вы пришли с предложением цены? Вы можете проверить документацию в Amazon Web сервис веб-сайт, или вы можете сохранить ответ в виде XML-файла и использовать свой любимый редактор XML / читателю для изучения реакции. FireFox просто отлично для разбора XML-файла.

  SXML = $ (New-Object Net.WebClient). DownloadString ("$ URL")

 Эхо $ SXML> "C: \ \ response.xml" 

Я тестировал скрипт под Vista Beta 2 и он работает хорошо.

MSH теперь Microsoft PowerShell

Я не играл с оболочкой Монады на некоторое время, следующее, что я знаю, что есть новый скриптовый язык называется "Microsoft PowerShell". Сначала я думал, что это совершенно новый язык, но на самом деле они переименовали монады и сделал его PowerShell.

После установки, я попытался запустить одном из моих предыдущих скрипты Монады. Как и предыдущие обновления монады, политика выполнения по умолчанию является "ограниченным". В рамках этой политики, вы можете использовать PowerShell в интерактивном режиме. Сценарии не допускается. Если вы хотите запустить собственные сценарии без подписания, вам необходимо изменить политику выполнения. Теперь есть используется для изменения политики без использования редактора реестра. Вот используется для изменения политики RemoteSigned.

  Set-ExecutionPolicy RemoteSigned 

WQL и путь

Я играю с WQL сегодня. Для Долгое время я не мог получить этот запрос на работу.

  Установить colFiles objWMIService.ExecQuery = ("SELECT * FROM CIM_DataFile" & _

    "Где диск = 'C:' И РАСПРОСТРАНЕНИЕ = 'MDB и Path =" \ \ Windows \ \' ") 

Вы заметили, ничего плохого в запросе? Это путь! Я обнаружил, что вам нужно использовать двойной обратный слеш вместо одной косой чертой назад. Таким образом, правильный запрос должен быть таким.

  Установить colFiles objWMIService.ExecQuery = ("SELECT * FROM CIM_DataFile" & _

    "Где диск = 'C:' И РАСПРОСТРАНЕНИЕ = 'MDB и Path = \ \ \ \ Windows \ \ \ \'") 

Кроме того, я обнаружил, что если у вас есть! "=" В запросе, запрос выполняется очень очень медленно.

Как создать гиперссылку в электронных таблицах Excel с помощью VBScript

Кто-то в группе новостей задал этот вопрос. Это VBScript, который я написал для достижения этой цели.

  Dim objExcel

 Установить objExcel = WScript.CreateObject ("Excel.Application")



 objExcel.Visible = TRUE

 objExcel.Workbooks.Open "C: \ \ bintest.xls"

 objExcel.Workbooks (1). Активируйте

 objExcel.Workbooks (1). листы (1). Range ("A1"). Выберите



 Dim sLinkAddress

 sLinkAddress = "http://www.google.com"



 objExcel.Workbooks (1). листы (1). Hyperlinks.Add _

     objExcel.Selection, sLinkAddress

 objExcel.Workbooks (1) SaveAs. "C: \ \ bintest.xls"

 objExcel.Quit



 не установлен objExcel = ничего 

VB Script функцию-оболочку для регулярных выражений

  Функция Найдено (strTarget, strPattern)

   Dim Regex

   Установите регулярное выражение = Новый RegExp

   regEx.Pattern = strPattern

   regEx.IgnoreCase = False

   FOUND = regEx.Test (strTarget)

   Не установлено регулярное выражение = Nothing

 End Function 

Сценарий WMI для поиска файлов последнего обращения на определенную дату

  dtDate = "5/2/2005"

 strSearchFolder = "C: Windows"



 Установить objFSO = CreateObject ("Scripting.FileSystemObject")

 WScript.Echo "файл (ы) последнее посещение:« И dtDate & "в:" & strSearchFolder

 EnumAndCheckFiles objFSO.GetFolder (strSearchFolder), dtDate



 Sub EnumAndCheckFiles (objFolder, dtDate)

     Установить objFiles = objFolder.Files

     Для каждого OBJFILE в objFiles

     CheckFile OBJFILE, dtDate

     Следующий

     Для каждого objSubfolder в objFolder.SubFolders

         EnumAndCheckFiles objSubfolder, dtDate

     Следующий

 End Sub



 Sub CheckFile (OBJFILE, dtDate)

     Если DateDiff ("D", objFile.DateLastAccessed, dtDate) = 0 Тогда

         WScript.Echo objFile.Path

     End If

 End Sub 

Переводчик

English flagItalian flagKorean flagChinese (Simplified) flagChinese (Traditional) flagPortuguese flagGerman flagFrench flagSpanish flagJapanese flagArabic flagRussian flagGreek flagDutch flagBulgarian flagCzech flagHindi flagRomanian flagSwedish flagHebrew flagHungarian flag

Архив