.net – 无法将System.Xml.XmlNode转换为System.Xml.Linq.XElement

我收到错误调用函数GetListItems,但有点奇怪,因为它适用于Visual Studio 2008 Express但在Visual Basic 2010 Express中没有:
Dim ndQuery As XmlNode = xmlDoc.CreateNode(XmlNodeType.Element,"Query","")

    Dim ndViewFields As XmlNode = xmlDoc.CreateNode(XmlNodeType.Element,"ViewFields","")
    Dim ndQueryOptions As XmlNode = xmlDoc.CreateNode(XmlNodeType.Element,"QueryOptions","")

    ndQueryOptions.InnerXml = "<IncludeMandatoryColumns>False</IncludeMandatoryColumns>" & _
                                "<DateInUtc>True</DateInUtc>"

    ndViewFields.InnerXml = "<FieldRef Name=""LinkFilename"" />" & _
                            "<FieldRef Name=""Empresa"" />" & _
                            "<FieldRef Name=""Puesto"" />" & _
                            "<FieldRef Name=""Fecha_x0020_Vigente"" />" & _
                            "<FieldRef Name=""Oferta_x0020_vigente"" />"

    ndQuery.InnerXml = ""

    Try

        Dim ndListItems As XmlNode = IntranetLists.GetListItems(ListUUID,Nothing,_
                                                    ndQuery,ndViewFields,ndQueryOptions,Nothing)

这就是我要求的功能:

Public Function GetListItems(ByVal listName As String,ByVal viewName As String,ByVal query As System.Xml.Linq.XElement,ByVal viewFields As System.Xml.Linq.XElement,ByVal rowLimit As String,ByVal queryOptions As System.Xml.Linq.XElement,ByVal webID As String) As System.Xml.Linq.XElement
        Dim inValue As ListasIntranetGureak.GetListItemsRequest = New ListasIntranetGureak.GetListItemsRequest()
        inValue.Body = New ListasIntranetGureak.GetListItemsRequestBody()
        inValue.Body.listName = listName
        inValue.Body.viewName = viewName
        inValue.Body.query = query
        inValue.Body.viewFields = viewFields
        inValue.Body.rowLimit = rowLimit
        inValue.Body.queryOptions = queryOptions
        inValue.Body.webID = webID
        Dim retVal As ListasIntranetGureak.GetListItemsResponse = CType(Me,ListasIntranetGureak.ListsSoap).GetListItems(inValue)
        Return retVal.Body.GetListItemsResult
    End Function
我没有VB 2008方便,但据我所知,XElement和XmlNode之间从未进行任何自动转换(隐式或显式) – LINQ-to-XML主要是DOM的并行实现,只有一个很少的东西(比如XmlReader作为源代码)的共同点.

然而;在解决问题方面,我建议的最好的方法是使用xml;一个C#示例(使用CreateReader避免必须通过字符串):

XElement el = new XElement("foo",new XAttribute("abc","def"),new XElement("bar"));
var doc = new XmlDocument();
using (var reader = el.CreateReader()) {
    doc.Load(reader);
}
XmlNode node = doc.DocumentElement; // node could also be typed as XmlElement

并将其转换回来(以匹配问题标题):

XElement andBackAgain;
using(var reader = new XmlNodeReader(node)) {
    andBackAgain = XElement.Load(reader);
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念
xml文件介绍及使用
xml编程(一)-xml语法
XML文件结构和基本语法
第2章 包装类
XML入门的常见问题(二)
Java对象的强、软、弱和虚引用
JS解析XML文件和XML字符串详解
java中枚举的详细使用介绍
了解Xml格式
XML入门的常见问题(四)
深入SQLite多线程的使用总结详解
PlayFramework完整实现一个APP(一)
XML和YAML的使用方法
XML轻松学习总节篇