为了账号安全,请及时绑定邮箱和手机立即绑定

从 XML 获取数据:NetSuite WebService

从 XML 获取数据:NetSuite WebService

C#
吃鸡游戏 2023-07-22 18:09:42
我想从 获取数据NetSuite WebService。这就是我的代码的样子:public class HomeController : Controller{    WebServiceGenesisSoapClient service;    public HomeController()    {        var aa = WebServiceGenesisSoapClient.EndpointConfiguration.WebServiceGenesisSoap;        service = new WebServiceGenesisSoapClient(aa);    }    public async Task<IActionResult> Index()    {        WebServiceGenesisSoapClient client = new WebServiceGenesisSoapClient(aa, "http://82.71.28.125/WebServiceGenesis/WebServiceGenesis.asmx");        GetStockQuantityArrayRequest getStockQuantityArrayRequest = new GetStockQuantityArrayRequest();        var stocklist = client.GetStockQuantityArrayAsync(getStockQuantityArrayRequest).Result;        ArrayOfXElement res = stocklist.GetStockQuantityArrayResult;    }}变量中存在两个节点res。这是第一个节点的样子:<xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">  <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">    <xs:complexType>      <xs:choice minOccurs="0" maxOccurs="unbounded">        <xs:element name="StockQuantityArray">          <xs:complexType>            <xs:sequence>              <xs:element name="Colour" type="xs:string" minOccurs="0" />              <xs:element name="Quantity1" type="xs:int" minOccurs="0" />              <xs:element name="Quantity2" type="xs:int" minOccurs="0" />              <xs:element name="Quantity3" type="xs:int" minOccurs="0" />            </xs:sequence>          </xs:complexType>        </xs:element>      </xs:choice>    </xs:complexType>  </xs:element></xs:schema>这就是我的第二个节点的样子:<diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1" />如果响应中存在数据,则它们存在于第二个节点中。如果数据不存在,我想获取第一个节点元素name内的属性值。xs:sequence
查看完整描述

2 回答

?
皈依舞

TA贡献1851条经验 获得超3个赞

请尝试这个


        XmlNode secondNode = getSecondNode();// read the second node from the res

        if (secondNode != null)

        {

            XmlNodeList xnList = secondNode.SelectNodes("//NewDataSet//Departments");

            foreach (XmlNode xn in xnList)

            {

                string code = xn.SelectSingleNode("Code") != null ? xn.SelectSingleNode("Code").Value : "";

                string Description = xn.SelectSingleNode("Description") != null ? xn.SelectSingleNode("Description").Value : "";

            }

        }

        else

        {


            XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);

            nsmgr.AddNamespace("bk", "http://www.w3.org/2001/XMLSchema");

            XmlNode firstNode = getFirstNode();// read the first node from the res

            XmlNodeList xnList = firstNode.SelectNodes("//bk:sequence//bk:element", nsmgr);

            foreach (XmlNode xn in xnList)

            {

                string value = ((System.Xml.XmlElement)xn).Attributes["name"].Value;

            }

        }


查看完整回答
反对 回复 2023-07-22
?
红颜莎娜

TA贡献1842条经验 获得超12个赞

尝试以下 xml linq :


using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Xml;

using System.Xml.Linq;


namespace ConsoleApplication122

{

    class Program

    {

        const string FILENAME = @"c:\temp\test.xml";

        static void Main(string[] args)

        {

            XDocument doc = XDocument.Load(FILENAME);

            XElement root = doc.Root;

            XNamespace ns = root.GetDefaultNamespace();

            XNamespace nsDiffgr = root.GetNamespaceOfPrefix("diffgr");

            XNamespace nsData = root.GetNamespaceOfPrefix("msdata");


            List<Department> deparments = doc.Descendants(ns + "Departments").Select(x => new Department()

            {

                id = (string)x.Attribute(nsDiffgr + "id"),

                code = (string)x.Element(ns + "Code"),

                description = (string)x.Element(ns + "Description"),

                rowOrder = (int)x.Attribute(nsData + "rowOrder")

            }).ToList();


            Dictionary<string, Department> dict = deparments

                .GroupBy(x => x.id, y => y)

                .ToDictionary(x => x.Key, y => y.FirstOrDefault());

        }

    }

    public class Department

    {

        public string id { get; set; }

        public string code { get; set; }

        public string description { get; set; }

        public int rowOrder { get;set;}

    }


}


查看完整回答
反对 回复 2023-07-22
  • 2 回答
  • 0 关注
  • 120 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信