<element>
<adresse>0x50</adresse>
<typ>byt</typ>
<faktor>1</faktor>
<einheit/>
<kommentar>1 (153.00521703-PROTO)</kommentar>
<range/>
<wert>49</wert>
</element>
<element>
<adresse>0x51</adresse>
<typ>byt</typ>
<faktor>1</faktor>
<einheit/>
<kommentar>5</kommentar>
<range/>
<wert>53</wert>
</element>
<element>
<adresse>0x52</adresse>
<typ>byt</typ>
<faktor>1</faktor>
<einheit/>
<kommentar>3</kommentar>
<range/>
<wert>51</wert>
</element>
<element>
<adresse>0x53</adresse>
<typ>byt</typ>
<faktor>1</faktor>
<einheit/>
<kommentar>.</kommentar>
<range/>
<wert>46</wert>
</element>
<element>
<adresse>0x54</adresse>
<typ>byt</typ>
<faktor>1</faktor>
<einheit/>
<kommentar>0</kommentar>
<range/>
<wert>48</wert>
</element>
<element>
<adresse>0x55</adresse>
<typ>byt</typ>
<faktor>1</faktor>
<einheit/>
<kommentar>0</kommentar>
<range/>
<wert>48</wert>
</element>
<element>
<adresse>0x56</adresse>
<typ>byt</typ>
<faktor>1</faktor>
<einheit/>
<kommentar>5</kommentar>
<range/>
<wert>53</wert>
</element>
<element>
<adresse>0x57</adresse>
<typ>byt</typ>
<faktor>1</faktor>
<einheit/>
<kommentar>2</kommentar>
<range/>
<wert>50</wert>
</element>
我想在多个Textfile
中搜索特定值。
我写了一个简单的Regex
这样的东西,它找到了单词typ&gt;之间的任何东西。和\ typ&gt;
Regex RegTyp = new Regex(@"typ>(.*?)/typ>");
现在每当我找到“bit”这个词时,它应该会在textfile
Regex
中找到你可以找到的NEXT八个匹配项{/ 1}}
Regex RegValue = new Regex(@"value>(.*?)/value>")
在单词value&gt;之间找到任何内容和\ value&gt;
我正在尝试将其编程为:
if (a.Equals("bit"))
//a defines my match
{Regex RegValue = new Regex(@"value>(.*?)/value>");
for(int i =0;i<8;i++)
{...
问题是我的Regex
RegValue
现在匹配完整的文本而不是NEXT 8匹配后我将“bit”与RegTyp匹配
任何帮助都很有用 谢谢
答案 0 :(得分:0)
尝试以下xml linq:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
namespace ConsoleApplication1
{
class Program
{
const string FILENAME = @"c:\temp\test.xml";
static void Main(string[] args)
{
new Element(FILENAME);
}
}
public class Element
{
public static List<Element> elements = new List<Element>();
public int address { get; set;}
public string typ { get; set;}
public int faktor { get; set;}
public string einheit { get; set;}
public string kommentar { get; set;}
public string range { get; set;}
public int wert { get; set;}
public Element() { }
public Element(string filename)
{
XmlReaderSettings settings = new XmlReaderSettings();
settings.ConformanceLevel = ConformanceLevel.Fragment;
XmlReader reader = XmlReader.Create(filename, settings);
while (!reader.EOF)
{
if (reader.Name != "element")
{
reader.ReadToFollowing("element");
}
if (!reader.EOF)
{
XElement element = (XElement)XElement.ReadFrom(reader);
Element newElement = new Element();
Element.elements.Add(newElement);
newElement.address = int.Parse(((string)element.Element("adresse")).Substring(2), System.Globalization.NumberStyles.HexNumber);
newElement.typ = (string)element.Element("typ");
newElement.faktor = (int)element.Element("faktor");
newElement.einheit = (string)element.Element("einheit");
newElement.kommentar = (string)element.Element("kommentar");
newElement.range = (string)element.Element("range");
newElement.wert = (int)element.Element("wert");
}
}
}
}
}