Xml VB.net轴表示法未拾取节点值
我有一点XML来自Web服务Xml VB.net轴表示法未拾取节点值,xml,vb.net,visual-studio-2013,Xml,Vb.net,Visual Studio 2013,我有一点XML来自Web服务 <data> <request> <type>LatLon</type> <query>Lat 60.17 and Lon 24.94</query> </request> <time_zone> <localtime>2014-11-30 19:56</localtime> <utcOffset&
<data>
<request>
<type>LatLon</type>
<query>Lat 60.17 and Lon 24.94</query>
</request>
<time_zone>
<localtime>2014-11-30 19:56</localtime>
<utcOffset>2.0</utcOffset>
</time_zone>
<current_condition>
拉特隆
Lat 60.17和Lon 24.94
2014-11-30 19:56
2
我想把本地时间部分拉到一个变量中
这是代码
Public Function callWorldWeatherOnlineSearch(latitude, longitude) As Boolean
Using client As New WebClient
client.Encoding = Encoding.UTF8
Dim arr = client.DownloadString("https://api.worldweatheronline.com/free/v2/weather.ashx?q=" & latitude & "%2C" & longitude & "&format=xml&num_of_days=5&tp=24&showlocaltime=yes&key=KEY")
returnedXML = XElement.Parse(arr)
localTime = returnedXML...<data>...<time_zone>...<localTime>.Value
End Using
Return True
End Function
公共函数调用WorldWeatherOnlineSearch(纬度、经度)作为布尔值
将客户端用作新的WebClient
client.Encoding=Encoding.UTF8
Dim arr=客户端下载字符串(“https://api.worldweatheronline.com/free/v2/weather.ashx?q=“&latitude&%2C”&longitude&&format=xml&num\u of_days=5&tp=24&showlocaltime=yes&key=key”)
returnedXML=XElement.Parse(arr)
localTime=returnedXML……….值
终端使用
返回真值
端函数
localTime变量不包含任何内容
最令人烦恼的是,当我在VisualStudio中编写代码时,axis符号正确地(似乎!)遍历XML,所以我不知道我做错了什么
如果我直接去节点也不行。。我肯定这以前奏效了?没有其他localTime节点
localTime = returnedXML...<localtime>.Value
localTime=returnedXML…值
更新:
下面是该类的代码:
下面是对.xsd文件和targetNamespace唯一引用的抓取
在解决方案资源管理器中,它们彼此相邻
我只是注意到它是本地时间,所以我把它改成了本地时间,但还是没有用。在作业线处检查抓斗
下一行(分配应该发生的位置)。。大胖子什么都没有
这是本地窗口:
谢谢你在这件事上和我牵扯在一起。我还能查什么
更新2:
所以这里什么也没发生,我真的不想进入Xpath。所以我想我应该尝试将.xsd和weather类移动到另一个文件夹中
我还删除了对xsd的导入引用,不知道它是否会首先搜索本地文件夹
现在它拾取了错误的XSD文件。这是否是一个线索,XSD是否必须在运行时匹配,以及是否存在一些问题
更新3:
嗯。我把所有这些都放到了一个单独的项目中,只是为了解决这个问题
它仍然不起作用,直到我尝试从XSD文件中删除引用
我拉了targetNamespace=”http://mynamespace.org/wwo“从.xsd和刚果开始,它工作了
回到我的主要项目
我删除了targetNamespace=”http://mynamespace.org/wwo“和前面一样,imports语句引用了.xsd和lo,瞧,我有数据
我现在假设intellisense也可以工作,因为它与类位于同一文件夹中
所以是XSD引用把事情搞砸了,尽管根据前面的问题,我确实引用了XSD
指向任何能看到我哪里出错的人!!看来它还是管用的。谢谢您必须从查询中删除
元素,这是隐含的,因为它是根元素。因此:
Dim xml = client.DownloadString(...)
Dim dataNode = XElement.Parse(xml)
localtime = dataNode...<time_zone>...<localTime>.Value
Dim xml=client.DownloadString(…)
Dim dataNode=XElement.Parse(xml)
localtime=dataNode…….值
使用您发布的xml进行测试,效果良好。如果这仍然失败,那么您就没有得到预期的XML。使用调试器查看一下。我认为“数据”一词应该是no?当我使用您的代码时,它抛出了一个“system.data是一个名称空间…”错误。我确实试过直接短切到上面的节点。嗯,你是在使用我展示的Dim关键字吗?随便你怎么称呼它,我只是不太在乎你选择的标识符名称。我的水晶球说你有另一个变量名为“localtime”。可能在您声明“callWorldWeatherOnlineSearch”的位置附近。有一个类的属性调用wwoManager类。我把它删掉了。并尝试重命名'Dim localtime1=dataNode…….Value'。但你的球今天一定是阴天:(我现在输入了'localTime=returnedXML…….Value',但里面仍然没有任何内容。该死的东西。还有什么可能?连接到气象服务器需要凭据吗?我在使用代码时得到了403禁止。我宁愿使用实际返回的字符串而不是伪造的字符串来测试东西。@Proputix你肯定不会是sug我是在为API发布私钥吗?不是,我是在问,因为a)我看不到提交的令牌,b)给定URL,它看起来可能是免费版本。顺便说一句,不需要使用部分XML片段进行复制,也不需要从中反向设计xsd。