我想搜索xml文件中的元素值并从中获取特定的字符串。例如,我的xml文件中具有以下元素值:
<Content>Shape="Rectangle" Tooltip="data" StrokeThickness="2" Tag="default" </Content>
现在,我想阅读此内容Content
并获取Tooltip
值作为我的结果字符串,这应该给我“数据”。我想要类似的东西:
string restuledString = Tooltip.value
怎么做?
更新:
这是完整的xml文件:
<?xml version="1.0" encoding="utf-8"?>
<Topologies>
<ConfigurationItems>
<ConfigurationItem Label="Default Tag">
<Attribute Name="display_lable" Label="Display Label" Type="clas java.lang.String" Value="Default Tag" />
<Attribute Name="MemorySize" Label="MemorySize" Type="class java.lang.Integer" Value="Default Tag" />
<Attribute Name="Description" Label="Description" Type="class java.lang.String" Value="SunOS" />
<Attribute Name="DiscoveredModel" Label="DiscoveredModel" Type="class java.lang.String" Value="Oracle Corporation sun4v SPARC T5-4" />
<X>289</X>
<Y>108.53999999999999</Y>
<Width>130</Width>
<Height>117</Height>
<ID>ed56efb4-6bdd-4dc7-8b79-db5e9b8484f1</ID>
<zIndex>0</zIndex>
<IsGroup>false</IsGroup>
<ParentID>00000000-0000-0000-0000-000000000000</ParentID>
<Content><Rectangle StrokeThickness="2" Tag="Default Thread Tag" ToolTip="data" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:dd="clr-namespace:DiagramDesigner;assembly=ADAX_GUI"><Rectangle.Style><Style TargetType="Rectangle"><Style.BasedOn><Style TargetType="Rectangle"><Style.Resources><ResourceDictionary /></Style.Resources><Setter Property="UIElement.RenderTransform"><Setter.Value><SkewTransform AngleX="-15" AngleY="0" CenterX="50" CenterY="25" /></Setter.Value></Setter><Setter Property="Shape.Fill"><Setter.Value><LinearGradientBrush StartPoint="0,0" EndPoint="0,1"><LinearGradientBrush.GradientStops><GradientStop Color="#FFFAFBE9" Offset="0" /><GradientStop Color="#FFFFA500" Offset="1" /></LinearGradientBrush.GradientStops></LinearGradientBrush></Setter.Value></Setter><Setter Property="Shape.Stroke"><Setter.Value><SolidColorBrush>#FFD69436</SolidColorBrush></Setter.Value></Setter><Setter Property="Shape.StrokeThickness"><Setter.Value><s:Double>1</s:Double></Setter.Value></Setter><Setter Property="Shape.StrokeLineJoin"><Setter.Value><x:Static Member="PenLineJoin.Round" /></Setter.Value></Setter><Setter Property="Shape.Stretch"><Setter.Value><x:Static Member="Stretch.Fill" /></Setter.Value></Setter><Setter Property="UIElement.IsHitTestVisible"><Setter.Value><s:Boolean>False</s:Boolean></Setter.Value></Setter><Setter Property="UIElement.SnapsToDevicePixels"><Setter.Value><s:Boolean>True</s:Boolean></Setter.Value></Setter></Style></Style.BasedOn><Style.Resources><ResourceDictionary /></Style.Resources><Setter Property="Shape.StrokeDashArray"><Setter.Value><DoubleCollection>1.5 0.7</DoubleCollection></Setter.Value></Setter></Style></Rectangle.Style><dd:DesignerItem.DragThumbTemplate><ControlTemplate><Rectangle Name="ThreadShape" Width="250" Height="150"><Rectangle.Style><Style TargetType="Rectangle"><Style.BasedOn><Style TargetType="Rectangle"><Style.BasedOn><Style TargetType="Rectangle"><Style.Resources><ResourceDictionary /></Style.Resources><Setter Property="UIElement.RenderTransform"><Setter.Value><SkewTransform AngleX="-15" AngleY="0" CenterX="50" CenterY="25" /></Setter.Value></Setter><Setter Property="Shape.Fill"><Setter.Value><LinearGradientBrush StartPoint="0,0" EndPoint="0,1"><LinearGradientBrush.GradientStops><GradientStop Color="#FFFAFBE9" Offset="0" /><GradientStop Color="#FFFFA500" Offset="1" /></LinearGradientBrush.GradientStops></LinearGradientBrush></Setter.Value></Setter><Setter Property="Shape.Stroke"><Setter.Value><SolidColorBrush>#FFD69436</SolidColorBrush></Setter.Value></Setter><Setter Property="Shape.StrokeThickness"><Setter.Value><s:Double>1</s:Double></Setter.Value></Setter><Setter Property="Shape.StrokeLineJoin"><Setter.Value><x:Static Member="PenLineJoin.Round" /></Setter.Value></Setter><Setter Property="Shape.Stretch"><Setter.Value><x:Static Member="Stretch.Fill" /></Setter.Value></Setter><Setter Property="UIElement.IsHitTestVisible"><Setter.Value><s:Boolean>False</s:Boolean></Setter.Value></Setter><Setter Property="UIElement.SnapsToDevicePixels"><Setter.Value><s:Boolean>True</s:Boolean></Setter.Value></Setter></Style></Style.BasedOn><Style.Resources><ResourceDictionary /></Style.Resources><Setter Property="Shape.StrokeDashArray"><Setter.Value><DoubleCollection>1.5 0.7</DoubleCollection></Setter.Value></Setter></Style></Style.BasedOn><Style.Resources><ResourceDictionary /></Style.Resources><Setter Property="UIElement.IsHitTestVisible"><Setter.Value><s:Boolean>True</s:Boolean></Setter.Value></Setter><Setter Property="Shape.Fill"><Setter.Value><SolidColorBrush>#00FFFFFF</SolidColorBrush></Setter.Value></Setter><Setter Property="Shape.Stroke"><Setter.Value><SolidColorBrush>#00FFFFFF</SolidColorBrush></Setter.Value></Setter></Style></Rectangle.Style></Rectangle></ControlTemplate></dd:DesignerItem.DragThumbTemplate></Rectangle></Content>
</ConfigurationItem>
</ConfigurationItems>
<Connections />
</Topologies>
如果您只想解析xml节点中的文本(由于您没有提供任何有关xml结构的信息,则必须自己处理),您可以使用一种讨厌的方式:
string yourNodeValue = @"Shape=""Rectangle"" Tooltip=""data"" StrokeThickness=""2"" Tag=""default""";
string output;
var keysAndValues = yourNodeValue.Split(' ').Select (nv => nv.Trim())
foreach(var keyValue in keysAndValues)
{
var pair = keyValue.Split('=');
if(pair[0] == "Tooltip")
{
output = pair[1].Trim('"');
break;
}
}
但是,我假设将始终key="value"
保留格式,并且之间不留空格。或者您可以只使用正则表达式分组模式Shape=\"(\w+)\"
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句