Преобразование linq-to-xml запроса из vb в c # - PullRequest
1 голос
/ 30 августа 2011

Не могли бы вы помочь

Dim ScriptDOC As XDocument
    ScriptDOC = XDocument.Parse(e.Result)

Dim Result = From ele In XElement.Parse(ScriptDOC.ToString).Elements("HANDERDETAILS")
If IsNothing(Result.Descendants("RESULT")) = False Then status = Result.Descendants("RESULT").Value

If LCase(status) = "ok" Then
    If IsNothing(Result.Descendants("BRANCHID")) = False Then BranchID = Result.Descendants("BRANCHID").Value

End If

Из конвертера я получил этот код:

XDocument ScriptDOC = default(XDocument);
string status = "";

ScriptDOC = XDocument.Parse(e.Result);

dynamic Result = from ele in XElement.Parse(ScriptDOC.ToString).Elements("HANDERDETAILS");
if ((Result.Descendants("RESULT") == null) == false)
    status = Result.Descendants("RESULT").Value;

if (Strings.LCase(status) == "ok") {
    if ((Result.Descendants("BRANCHID") == null) == false)
        BranchID = Result.Descendants("BRANCHID").Value;
}

что не хорошо.

Это мой xml:

* * 1010

1 Ответ

2 голосов
/ 30 августа 2011

Какой конвертер вы использовали?Похоже, что это может быть значительно улучшено.Вы действительно хотите следить за случаями, когда вы получаете коллекцию, но ожидаете одного объекта, который, по-видимому, не обрабатывается вашим исходным кодом.

XDocument ScriptDOC = XDocument.Parse(e.Result); 

var Result = ScriptDOC.Element("AAAAA").Element("HANDERDETAILS");
if (Result.Element("RESULT") != null)
{
    Status = Result.Element("RESULT").Value;
    if (Status.ToLower() == "ok")
        if (Result.Element("BRANCHID") != null)
            BranchID = Result.Element("BRANCHID").Value;
}

Вы также должны следить за пространствами имен.В VB вы можете объявить их как Import в вашем классе, но в C # вы должны явно указать их в своем коде.

XNamespace ns = "http://www.someuri";
var Result = ScriptDOC.Elements(ns + "HANDERDETAILS");
...