好的,我今天的问题是我正在尝试从我的 .NET Web 服务返回 XML 结果。 XML 直接从 SQL 存储过程生成,XML 如下所示:
<?xml version="1.0" encoding="utf-8" ?>
<Details>
<KlockleId>US0065NOVA</KlockleId>
<ListingPrice>54535.612830620680</ListingPrice>
<CurrencyCountry>US</CurrencyCountry>
<RealStateTax>0.000000000000</RealStateTax>
<CommonCharge>0.000000000000</CommonCharge>
<SquareFeet>4.200000000000000e+002</SquareFeet>
<ActivationDate>2011-04-19T16:16:46.577</ActivationDate>
<LotSize>0.000000000000000e+000</LotSize>
<YearBuilt>1969</YearBuilt>
<FirstName>Salmon Realty</FirstName>
<Phone>386 5474221</Phone>
<PropertyType>Condo/Co-op</PropertyType>
<Construction>Concrete</Construction>
<TotalRooms>None</TotalRooms>
<Bedroom>None</Bedroom>
<BathRoom>One</BathRoom>
<HalfBath>None</HalfBath>
<Address>600 Atlantic Ave N Unit: 1117</Address>
<Area>Volusia</Area>
<City>Daytona Beach</City>
<Country>United States</Country>
<PostalCode>32118</PostalCode>
<State>Florida</State>
<GMTOffset>0</GMTOffset>
<Status>Active</Status>
<Zooning>Residential</Zooning>
<PublicProperty>1</PublicProperty>
<DateAdded>2011-04-19T16:17:00</DateAdded>
<PropertyCategory>1</PropertyCategory>
<LoadType>2</LoadType>
</Details>
现在,当我使用 XML Pull Parser 时,出现错误:
05-12 21:42:02.963: WARN/System.err(1060): org.xmlpull.v1.XmlPullParserException: unexpected type (position:END_DOCUMENT null@1:0 in java.io.InputStreamReader@44e847a8)
我的 XML 解析器代码如下所示:
import java.io.IOException;
import java.io.StringReader;
import java.util.ArrayList;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import android.util.Xml;
public class PropertyDetailsHandler {
private ArrayList<PropertyDetails> details;
private StringReader xmlReader;
private final String DETAILS = "Details";
private final String COUNTRY = "Country";
private final String CITY = "City";
public PropertyDetailsHandler(String xml) {
xmlReader = new StringReader(xml);
}
public void parse() throws XmlPullParserException, IOException {
XmlPullParser parser = Xml.newPullParser();
parser.setInput(xmlReader);
// The StockQuote that is currently being parsed
PropertyDetails currentProperty = null;
// The current event returned by the parser
int eventType = parser.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
String xmlNodeName;
switch (eventType) {
case XmlPullParser.START_DOCUMENT:
details = new ArrayList<PropertyDetails>();
break;
case XmlPullParser.START_TAG:
xmlNodeName = parser.getName();
if (xmlNodeName.equalsIgnoreCase(DETAILS)) {
// When the element is reached, create a new
// StockQuote.
currentProperty = new PropertyDetails();
} else if (xmlNodeName.equalsIgnoreCase(COUNTRY)) {
currentProperty.setCountry(parser.nextText());
} else if (xmlNodeName.equalsIgnoreCase(CITY)) {
currentProperty.setCity(parser.nextText());
}
break;
case XmlPullParser.END_TAG:
xmlNodeName = parser.getName();
if (xmlNodeName.equalsIgnoreCase(DETAILS)) {
details.add(currentProperty);
break;
}
}
eventType = parser.next();
}
}
public ArrayList<PropertyDetails> getCountry() {
return details;
}
}
现在我只是想从 XML 中解析 City 和 Country,但是正如你从错误中看到的那样,它甚至没有在我的标签上获取全部。那么,有什么建议吗?
最佳答案
听起来您的 XMLReader 实例是空的:没有提取任何内容。您正在检索密码的 URL 是否以某种方式进行了身份验证?
05-12 21:42:02.963: WARN/System.err(1060): org.xmlpull.v1.XmlPullParserException: unexpected type (position:END_DOCUMENT null@1:0 in java.io.InputStreamReader@44e847a8)
注意位置声明:1:0 表示错误发生在第 0 行的第 1 个字符(或第 1 行的第 0 个字符,我永远不记得他们是如何从版本到版本)。
关于.net - Android:从 .NET soap Web 服务检索 XML 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5993003/
作为我的Rails应用程序的一部分,我编写了一个小导入程序,它从我们的LDAP系统中吸取数据并将其塞入一个用户表中。不幸的是,与LDAP相关的代码在遍历我们的32K用户时泄漏了大量内存,我一直无法弄清楚如何解决这个问题。这个问题似乎在某种程度上与LDAP库有关,因为当我删除对LDAP内容的调用时,内存使用情况会很好地稳定下来。此外,不断增加的对象是Net::BER::BerIdentifiedString和Net::BER::BerIdentifiedArray,它们都是LDAP库的一部分。当我运行导入时,内存使用量最终达到超过1GB的峰值。如果问题存在,我需要找到一些方法来更正我的代
我正在尝试使用ruby和Savon来使用网络服务。测试服务为http://www.webservicex.net/WS/WSDetails.aspx?WSID=9&CATID=2require'rubygems'require'savon'client=Savon::Client.new"http://www.webservicex.net/stockquote.asmx?WSDL"client.get_quotedo|soap|soap.body={:symbol=>"AAPL"}end返回SOAP异常。检查soap信封,在我看来soap请求没有正确的命名空间。任何人都可以建议我
我想安装一个带有一些身份验证的私有(private)Rubygem服务器。我希望能够使用公共(public)Ubuntu服务器托管内部gem。我读到了http://docs.rubygems.org/read/chapter/18.但是那个没有身份验证-如我所见。然后我读到了https://github.com/cwninja/geminabox.但是当我使用基本身份验证(他们在他们的Wiki中有)时,它会提示从我的服务器获取源。所以。如何制作带有身份验证的私有(private)Rubygem服务器?这是不可能的吗?谢谢。编辑:Geminabox问题。我尝试“捆绑”以安装新的gem..
我有一个对象has_many应呈现为xml的子对象。这不是问题。我的问题是我创建了一个Hash包含此数据,就像解析器需要它一样。但是rails自动将整个文件包含在.........我需要摆脱type="array"和我该如何处理?我没有在文档中找到任何内容。 最佳答案 我遇到了同样的问题;这是我的XML:我在用这个:entries.to_xml将散列数据转换为XML,但这会将条目的数据包装到中所以我修改了:entries.to_xml(root:"Contacts")但这仍然将转换后的XML包装在“联系人”中,将我的XML代码修改为
是的,我知道最好使用webmock,但我想知道如何在RSpec中模拟此方法:defmethod_to_testurl=URI.parseurireq=Net::HTTP::Post.newurl.pathres=Net::HTTP.start(url.host,url.port)do|http|http.requestreq,foo:1endresend这是RSpec:let(:uri){'http://example.com'}specify'HTTPcall'dohttp=mock:httpNet::HTTP.stub!(:start).and_yieldhttphttp.shou
最近,当我启动我的Rails服务器时,我收到了一长串警告。虽然它不影响我的应用程序,但我想知道如何解决这些警告。我的估计是imagemagick以某种方式被调用了两次?当我在警告前后检查我的git日志时。我想知道如何解决这个问题。-bcrypt-ruby(3.1.2)-better_errors(1.0.1)+bcrypt(3.1.7)+bcrypt-ruby(3.1.5)-bcrypt(>=3.1.3)+better_errors(1.1.0)bcrypt和imagemagick有关系吗?/Users/rbchris/.rbenv/versions/2.0.0-p247/lib/ru
在Rails4.0.2中,我使用s3_direct_upload和aws-sdkgems直接为s3存储桶上传文件。在开发环境中它工作正常,但在生产环境中它会抛出如下错误,ActionView::Template::Error(noimplicitconversionofnilintoString)在View中,create_cv_url,:id=>"s3_uploader",:key=>"cv_uploads/{unique_id}/${filename}",:key_starts_with=>"cv_uploads/",:callback_param=>"cv[direct_uplo
我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b
您如何在Rails中的实时服务器上进行有效调试,无论是在测试版/生产服务器上?我试过直接在服务器上修改文件,然后重启应用,但是修改好像没有生效,或者需要很长时间(缓存?)我也试过在本地做“脚本/服务器生产”,但是那很慢另一种选择是编码和部署,但效率很低。有人对他们如何有效地做到这一点有任何见解吗? 最佳答案 我会回答你的问题,即使我不同意这种热修补服务器代码的方式:)首先,你真的确定你已经重启了服务器吗?您可以通过跟踪日志文件来检查它。您更改的代码显示的View可能会被缓存。缓存页面位于tmp/cache文件夹下。您可以尝试手动删除
我目前正在使用以下方法获取页面的源代码:Net::HTTP.get(URI.parse(page.url))我还想获取HTTP状态,而无需发出第二个请求。有没有办法用另一种方法做到这一点?我一直在查看文档,但似乎找不到我要找的东西。 最佳答案 在我看来,除非您需要一些真正的低级访问或控制,否则最好使用Ruby的内置Open::URI模块:require'open-uri'io=open('http://www.example.org/')#=>#body=io.read[0,50]#=>"["200","OK"]io.base_ur