加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 23:48:55 所属栏目:百科 来源:网络整理
导读:我收到错误调用函数GetListItems,但有点奇怪,因为它适用于Visual Studio 2008 Express但在Visual Basic 2010 Express中没有: Dim ndQuery As XmlNode = xmlDoc.CreateNode(XmlNodeType.Element,"Query","") Dim ndViewFields As XmlNode = xmlDoc.CreateNod
我收到错误调用函数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);
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读