0
<?xml version="1.0" ?>
<SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <SOAP-ENV:Body>
    <ns1:getCountriesResponse xmlns:ns1="SoapQrcode">
      <return SOAP-ENC:arrayType=":[8]" xsi:type="SOAP-ENC:Array">
        <item xsi:type="xsd:string">
          China
        </item>
        <item xsi:type="xsd:string">
          France
        </item>
     </return>
    </ns1:getCountriesResponse>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

この XML 形式を使用していますが、Titanium を使用してこの XML 形式から国名を取得するにはどうすればよいですか?

4

3 に答える 3

3

助けを求める前に、少なくともXML の解析を試みたり、少なくとも DOCS がどこにあるかを知っていることを示したりするのは親切なジェスチャーです。しかしありがたいことに、これは Titanium では非常に簡単です。以下に例を示します。

// Load file containing XML from resources directory
var xmlFile = Ti.Filesystem.getFile('countries.xml');

// Get contents(as blob) from file
var contents = xmlFile.read();

// Turn contents into a XMLDomDocument for parsing (get string from blob first)
var xmlDomDoc = Ti.XML.parseString(contents.text);

// Get all the item tags and their contents
var allItemTags = xmlDomDoc.getElementsByTagName('item');

// Loop over them and grab the text contents and print
for (var i = 0; i < allItemTags.length; i++) {
    var countryName = allItemTags.item(i).textContent;
    Ti.API.info(countryName);
}

私が提供したリンクを大まかに調べると、これを行う方法に関する API が表示されます。

于 2012-08-14T15:23:45.857 に答える
1

上記の Xml 応答は動的でした。以下の Xml を解析した結果が解決策です。

Ti.API.info('Original response ' + this.responseText);

// Document Object
var doc = this.responseXML.documentElement;

Ti.API.info('Document XML' + doc);

var elements = doc.getElementsByTagName("item");

Ti.API.info('Document item' + elements.text);

//this is the XML document object

// Parse XML
var xml = Ti.XML.parseString(this.responseText);
Ti.API.info('Parsed XML' + xml);

// get item from xml
var countryList = xml.documentElement.getElementsByTagName("item");

Titanium.API.info("country is " + countryList);
Titanium.API.info("lenght of countries" + countryList.length);
Titanium.API.info("country is " + countryList.item(0));

for (var i = 0; i < countryList.length; i++) {
    Titanium.API.info("loop country is " + countryList.item(i).text);
    countryArray[i] = countryList.item(i).text;
};

Titanium.API.info("Array country is " + countryArray);
于 2012-08-16T13:31:17.723 に答える