这里有一个我使用的函数,可以完美地解析XML文件。
我还包括了一个“分隔符”类,您可以使用它来存储XML分隔符,例如
。
<startTag></endTag>
非常容易使用,而且运行得很好...如果您有任何问题,请告诉我
像这样使用函数:
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);
以下是类的定义:
这是一个类:
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";
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
whmcsapi
- Byron Whitlock