как получить значение xmlnode на основе значения атрибута в С#.
<Products>
<Error>0</Error>
<Product link = "OWN">
<ProductCode>CA</ProductCode>
<ProductType>Account</ProductType>
<ProductSubtype>Current Account</ProductSubtype>
<ProductDescriptionEng>Current Account</ProductDescriptionEng>
<ProductNumber>1234567</ProductNumber>
<ProductCurrency></ProductCurrency>
<ProductCurrencyCode>01</ProductCurrencyCode>
<ProductBalance>899293.003</ProductBalance>
<LoanRef></LoanRef>
<OldLoanRef></OldLoanRef>
<ProductStandardID>00010001</ProductStandardID>
<OldLoanRef></OldLoanRef>
<ProductStatusCode>00</ProductStatusCode>
<ProductStatus>OPEN</ProductStatus>
<ProductCategory>Deposit Account</ProductCategory>
</Product>
</Product>
в приведенном выше примере я хотел бы получить значение ссылки на продукт «OWN» на основе передаваемого значения атрибута (1234567) 1234567.
Я пробовал следующий код, но он не возвращает значение «OWN» из узла «Ссылка на продукт».
string _accountsXml = GetProducts();
_xmlDoc.LoadXml(_accountsXml);
_productLinkType = _xmlDoc.SelectSingleNode(string.Format("//Products[../ProductNumber = '{0}']", prodNumber));
Попробуй это
_productLinkType = _xmlDoc.SelectSingleNode(string.Format("//Products[..//ProductNumber = '{0}']", prodNumber));
или
var xDoc = XDocument.Load(_accountsXml);
var productLinkType = xDoc.XPathSelectElement(string.Format("//Products[..//ProductNumber = '{0}']", prodNumber)).Element("Product").Attribute("link").Value;
Закрывающий тег в вашем примере — «Продукт», он должен быть «Продукты».
Вам нужно добавить код для получения значения атрибута элемента, возможно, имея в виду случай, когда нужный элемент не был найден. Кроме того, будьте осторожны с именами элементов - как в выражении xpath, так и в XML.
Следующий тестовый код будет иметь «OWN» в переменной ссылки:
var doc = XDocument.Parse(@"<?xml version = ""1.0""?>
<Products>
<Error>0</Error>
<Product link = ""Global""/>
<Product link = ""OWN"">
<Some/>
<ProductNumber>1234567</ProductNumber>
<Nodes/>
</Product>
<Product link = ""External"">
<ProductNumber>777</ProductNumber>
</Product>
</Products>");
var id = 1234567;
var link = doc
.XPathSelectElement($"//Product[ProductNumber = '{id}']")
?.Attribute("link")
?.Value;
Console.WriteLine($"Product link: {link ?? "not found"}");
Спасибо ДК. Идеально. Оно работает. Ценю твою помощь.
Спасибо Пинаки. Ценить. :)
Спасибо Пинаки. Второй вариант кода "Или" работает. Ценю твою помощь.