Ecco una funzione che uso che funziona perfettamente analizzare i file xml. Ho incluso una classe 'delimitatore' che è possibile utilizzare per memorizzare delimitatori XML come
<startTag></endTag>
Veramente facile da usare, e funziona come un fascino ... fatemi sapere se avete domande
utilizzare la funzione come questa:
XmlDataManager.List<XmlManager.Delimeter> delimeters = new List<XmlManager.Delimeter>("<result>","</result>");
int[] splitIndexArray = { 1 }; // Tells the function where to split in case where the same value occurs multiple times in a line... usually 1 need an entry for each value
String testValue = "";
List<String> values = new List<String> {testValue}
XmlDataManager.ReadValues(delimeters, values, `<xmlFileNameHere>,` splitIndexArray);
Qui è la classe:
public class XmlDataManager
{
const String XML_FILE_WRITE_FAIL = "Could not write to xml file";
const String XML_FILE_READ_FAIL = "Could not read from xml file";
const String XML_FILE_WRITE_BUILDER_FAIL = "Could not write values to string";
/// <summary>
///
/// </summary>
public struct Delimeter
{
internal String StartDelimeter { get { return _startDelimeter; } }
internal String EndDelimeter { get { return _endDelimeter; } }
private readonly String _startDelimeter;
private readonly String _endDelimeter;
public Delimeter(String startDelimeter, String endDelimeter)
{
_startDelimeter = startDelimeter;
_endDelimeter = endDelimeter;
}
public Delimeter(String startDelimeter)
{
_startDelimeter = startDelimeter;
_endDelimeter = String.Empty;
}
}
public static void ReadValuesLineByLine( List<Delimeter> elementDelimeters,
List<String> values,
String fileName,
int[] splitIndexes)
{
try
{
using (StreamReader sr = new StreamReader(fileName))
{
String line = sr.ReadLine();
while (!sr.EndOfStream)
{
for (int i = 0; i <= values.Count-1; i++)
{
if (line.Contains(elementDelimeters[i].StartDelimeter))
{
String[] delimeters = { elementDelimeters[i].StartDelimeter, elementDelimeters[i].EndDelimeter };
String[] elements = line.Split(delimeters, StringSplitOptions.None);
values[i] = elements[splitIndexes[i]];
}
}
line = sr.ReadLine();
}
}
}
catch(Exception ex)
{
throw new Exception(XML_FILE_READ_FAIL, ex);
}
}
}
Peter
Suggerimento: il nodo principale è denominato 'whmcsapi' –
possibile duplicato di [Come leggere e analizzare un file XML in C#?] (Http://stackoverflow.com/questions/642293/how-do- i-read-and-parse-an-xml-file-in-c) –
Il problema è che non sto analizzando un file, ho i dati XML in una stringa. Tutto quello che trovo è su come analizzare un file. –