Nayan_Kumar Ответов: 2

Передайте имя из кода и получите тип данных этого элемента из xsd-файла, C#


Я получаю значение в коде. Это значение присутствует в xsd-файле как -
хз:тип элемента="хз:байт" наименование="sfFacilityID"


Мне нужно проверить это имя (т. е. sfFacilityID) в XSD-файле и получить тот же тип данных в c#

Что я уже пробовал:

если (templist.Count () <= 0)
{
Comparisionlist cmplist = новый Comparisionlist();
cmplist.tagName = слова[i];
list. Add (cmplist);
темп = cmplist.имя тега;
var xs = XNamespace. Get ("~/Content/FacilityInquiryService.xsd1.xsd");
var doc = XDocument.Синтаксический анализ (xml);
foreach (var элемент в doc.Потомки (элемент xs + ""))
{
datatypexs = элемент.Тип атрибута").Ценность;
}
}

2 Ответов

Рейтинг:
2

njammy

Привет nayankumar_msat@hotmail.com

Пожалуйста, смотрите мой пример ниже для чтения xml (смотрите, как он работает здесь : XML read dotNetFiddle[^]

Я надеюсь, что это поможет вам начать читать xml.

using System;
using System.Xml;
					
public class Program
{
	private const string TestXml = 
		"<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
		"<MovieData>" +
			"<Movies>" +
				"<Movie>" +
					"<Id>1</Id>" +
					"<Name>Batman</Name>" +
				"</Movie>" +
				"<Movie>" +
					"<Id>2</Id>" +
					"<Name>Batman Returns</Name>" +
				"</Movie>" +
				"<Movie>" +
					"<Id>3</Id>" +
					"<Name>Batman Dark Knight</Name>" +
				"</Movie>" +
			"</Movies>" +
		"</MovieData>";
		
	
	public static void Main()
	{
		XmlDocument xmlDoc = new XmlDocument();
		xmlDoc.LoadXml(TestXml);
		
		string xpath = "MovieData/Movies/Movie";
		var nodes = xmlDoc.SelectNodes(xpath);
		
		foreach(XmlNode childrenNode in nodes)
		{
			Console.WriteLine(
				"Movie - Id: " + childrenNode.SelectSingleNode(".//Id").InnerText + 
				", Name: " + childrenNode.SelectSingleNode(".//Name").InnerText);
		}
	}
}


Код выше выводит:

Фильм-Id: 1, Имя: Бэтмен
Фильм-Id: 2, Название: Batman Returns
Фильм-Id: 3, Имя: Бэтмен Темный Рыцарь

Для xsd запросов и получения типов данных проверьте это решение:
xml-как извлечь атрибуты вместе с их именами и типами данных из XSD-файла с помощью c# - Stack Overflow[^]


Nayan_Kumar

Спасибо ньямми за помощь.
Я кратко изложу то, что ищу. В Xsd-файле есть элемент :
xs: element type=" xs:float "name=" loanProductID"
Что мне нужно, так это то, что в коде я получаю значение - "loanProductID".
Мне нужно передать этот "loanProductID" в xsd - файл и получить его тип, то есть-float. Я хочу получить типы данных всех значений, которые присутствуют в файле xsd. Пожалуйста, помогите мне

njammy

Проверить ссылку в ответ.

Nayan_Kumar

нямми
Я проверил этот код ранее в тот же день в stackoverflow, но не тренировался для меня. Поэтому я застрял. Пожалуйста, помогите мне, как я могу проверить значение в файле xsd и получить его тип данных. Я обошел почти все места, но не смог найти решения. Ваша помощь будет очень признательна. Спасибо.

njammy

Я не вижу никакого другого решения,кроме переполнения стека. Извиняюсь.

Nayan_Kumar

Но спасибо за Ваш Честный ответ !

Рейтинг:
0

Nayan_Kumar

if my xsd file is like :

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="retrieveFacilityResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="retrieveFaciltyResponse">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="messageHeader">
                <xs:complexType>
                  <xs:sequence>
                 <xs:element name="facility" maxOccurs="unbounded" minOccurs="0">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element type="xs:byte" name="sfFacilityID"/>
                    <xs:element type="xs:int" name="sfLoanID"/>
                    <xs:element type="xs:string" name="loanReviewStatus"/>



Дело сделано. Ниже приведен код, который я использовал.:

XmlDocument doc = new XmlDocument();
                        doc.Load("Content\FacilityInquiryService.xsd1.xsd");
                        //doc.Load("C:\\WA_Services\\Wholesale Portfolio\\SunTrust\\Wholesale\\Commercial\\Admin\\Admin.Site\\Content\\FacilityInquiryService.xsd1.xsd");
                        XmlNamespaceManager mgr = new XmlNamespaceManager(doc.NameTable);
                        mgr.AddNamespace("xx", "http://www.w3.org/2001/XMLSchema");
                        foreach (XmlElement el in doc.SelectNodes("//xx:element[@name='retrieveFacilityResponse'][1]/xx:complexType/xx:sequence/xx:element//xx:complexType/xx:sequence/xx:element", mgr))
                        {
                            temp = el.GetAttribute("type");
                            if (el.GetAttribute("name") == words[i])
                            {
                                //temp1.Remove(3);
                                temp1 = (el.GetAttribute("type")).Substring(3, (el.GetAttribute("type")).Length - 3); // (el.GetAttribute("name"));
                                cmplist.Datatype = temp1;
                                break;
                            }      
                        }