Actionscript 2.0 XMLPath для доступа к значению <div>в файле XHTML - PullRequest
1 голос
/ 17 ноября 2011

Буду признателен за любые советы здесь. Основываясь на том, что я нашел в Интернете, я попробовал следующее, чтобы попытаться получить то, что мне нужно.

Я использую Actionscript 2.0 XPath, чтобы попытаться получить доступ к значению <div> в файле xhtml, но у меня есть этот простой фрагмент Actionscript, который я не могу получить:

=====================
stop();

import mx.xpath.XPathAPI;

var rssfeed_xml:XML = new XML();
rssfeed_xml.ignoreWhite = true;
rssfeed_xml.onLoad = function(success:Boolean) {
trace("onload...");
if (success) {
trace("success...");


var elementId:String = "title1";
var elementPath:String = "//div[@id'" + elementId + "']";
found_elements = XPathAPI.selectNodeList(rssfeed_xml.firstChild, elementPath);


if (found_elements.length == 1) {
  trace(found_elements[0]);
}


} else {
trace("error loading XML");
}
};
rssfeed_xml.load("test.xhtml");

=====================

Мой test.xhtml очень прост:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Landing</title>
</head>

<div id="mainArea">
    <div id="content">
        <div id="calloutContent">
            <div id="title">Search Our QA Database</div>
            <div id="callout1">text1</div>  
            <div id="callout2">text2</div>         
            <div id="callout3">text3</div>
        </div>
    <div id="heroContent">
        <div id="title1">text4</div>
        <div id="title2">text5</div>
    </div>
    </div>
</div>
</body>
</html>

В моем ActionScript я просто пытаюсь получить значение <div id="title1">, которое равно "text4".

Код Actionscript выглядит правильно, но я ничего не получаю по строке trace(found_elements[0]);.

Есть идеи?

1 Ответ

1 голос
/ 17 ноября 2011

Ваша проблема исходит от пути, который вы создали. Это ваш текущий путь (с встроенной переменной):

"//div[@id'title1']"

Здесь есть пара неправильных вещей:

  • В XHTML отсутствует открывающий тег <body>
  • // в начале ничего не делает. Для подстановки узла вам нужно использовать символ *. Это даст вам глубину первого узла. Чтобы добраться до нужной вам глубины, вам нужно будет повторить это еще три раза.
  • отсутствует = после имени атрибута.

Этот путь работает на выбранный вами div:

"/*/*/*/*/div[@id='title1']"

Этот путь возвращает полный узел, поэтому, чтобы просто извлечь текст, вы запрашиваете firstChild.nodeValue:

trace(found_elements[0].firstChild.nodeValue);

Очевидная проблема здесь в том, что вам нужно знать, где находится ваш целевой узел в документе.

...