Ich habe folgende xml:XML-Parsing - Code Refactoring Ausgabe
<?xml version="1.0" encoding="utf-8"?>
<RootData>
<PassResult>
<FirstOne>P1</FirstOne>
<SecondOne>P2</SecondOne>
<IsMale>false</IsMale>
</PassResult>
<TestResult>
<MarkOne>100</MarkOne>
<MarkTwo>50</MarkTwo>
<Slope>30</Slope>
</TestResult>
<ToneTestResult>
<TotalTime>2</TotalTime>
<CorrectPercentage>90</CorrectPercentage>
</ToneTestResult>
<QuestionnaireResult Version="1">
<Question Id="50">
<Answer Id="B" />
</Question>
<Question Id="60">
<Answer Id="A" />
</Question>
</QuestionnaireResult>
</RootData>
Ich habe den folgenden Code, die überhaupt nicht einen guten suchen. Viele wiederholte Linkanfragen. Wie kann ich diesen Code strukturierter umstrukturieren, um "OutputData" -Objekt zu füllen. Ich will nicht, es zu XmlSerializer ändern jetzt :-(
Beispielcode:.
// Gets the root element decendants
var elementRootData = xDocument.Descendants("RootData");
var xElements = elementRootData as IList<XElement> ?? elementRootData.ToList();
// Read first leaf node "ProfileResult"
var passResult = from xElement in xElements.Descendants("PassResult")
select new
{
FirstOne = xElement.Element("FirstOne").GetValue(),
SecondOne = xElement.Element("SecondOne").GetValue(),
IsMale = xElement.Element("IsMale").GetValue()
};
// Read second leaf note
var testResult = from xElement in xElements.Descendants("TestResult")
select new
{
MarkOne = xElement.Element("MarkOne").GetValue(),
MarkTwo = xElement.Element("MarkTwo").GetValue(),
Slope = xElement.Element("Slope").GetValue()
};
// Update OutputData object
var parseOutputData = new OutputData();
foreach (var result in passResult)
{
parseOutputData.FirstOne = result.FirstOne;
parseOutputData.SecondOne = result.SecondOne;
parseOutputData.IsMale = result.IsMale.Equals("True");
}
foreach (var result in testResult)
{
parseOutputData.MarkOne = double.Parse(result.MarkOne);
parseOutputData.MarkTwo = double.Parse(result.MarkTwo);
parseOutputData.Slope = double.Parse(result.Slope);
}
Ich habe etwas mehr Code wie diesen zu schreiben, um andere Elemente Daten wie ToneTestResult zu füllen, QuestionnaireResult usw. Can jemand mit einem Beispielcode vorschlagen?
mit freundlichen Grüßen,
Wenn Sie ganze xml in Objekt benötigen warum Deserialisieren Sie nicht xml? – niksofteng
Optionen hier: http://stackoverflow.com/questions/13171525/converting-xml-to-a-dynamic-c-sharp-object –