0

I have an XML file as

<Rules>
  <Rule ruleMasterId ="7" id="SN007" name="ViewNamingFormat" forTable="False" forSP="False" forView="true" forFn="false" forScript="False" action="1" enabled="True" >
    <Description>Follow view naming format</Description>
    <ErrorMessage>View name should start with vw </ErrorMessage>
    <regex><![CDATA[^(vw|VW)?=.*[A-Za-z0-9]*$]]></regex>
  </Rule>
  <Rule ruleMasterId ="8" id="SN008" name="InvalidSchemaIdentifiers" forTable="true" forSP="true" forView="true" forFn="true" forScript="false" action="1" enabled="True" >
    <Description>Maintain schema type while addressing object name. </Description>
    <ErrorMessage>Missing schema while addressing object name</ErrorMessage>
    <DefaultValues>dbo,test</DefaultValues>
  </Rule>
</Rules>

I am trying to populate the values by using the below code

string filePath = @"D:\RuleMaster.xml";
                //Load xml
                XDocument xdoc = XDocument.Load(filePath);


                var xx = (from rule in xdoc.Descendants("Rule")
                 select new
                 {
                     ID = rule.Attribute("id").Value,
                     Name = rule.Attribute("name").Value,
                     ForTable = Convert.ToBoolean(rule.Attribute("forTable").Value),
                     IsForSP = Convert.ToBoolean(rule.Attribute("forSP").Value),
                     IsForUDF = Convert.ToBoolean(rule.Attribute("forFn").Value),
                     IsForView = Convert.ToBoolean(rule.Attribute("forView").Value),
                     IsForScript = Convert.ToBoolean(rule.Attribute("forScript").Value),
                     Enabled = Convert.ToBoolean(rule.Attribute("enabled").Value),
                     Description = rule.Element("Description").Value,
                     ErrorMessage = rule.Element("ErrorMessage").Value,
                     Regex = rule.Attribute("regex") == null ? string.Empty : rule.Attribute("regex").Value,
                     DefaultValues = rule.Attribute("DefaultValues") == null ? string.Empty : rule.Attribute("DefaultValues").Value
                 }
                ).ToList();

But "Default Value", "Regex" are coming as blank.Why? Any idea where I am making wrong?

4

2 回答 2

3

DefaultValues并且regex元素而不是属性

于 2013-05-29T07:11:05.680 回答
0
Regex = rule.Element("regex") == null ? string.Empty : rule.Element("regex").Value,
DefaultValues = rule.Element("DefaultValues") == null ? string.Empty : rule.Element("DefaultValues").Value
于 2013-05-29T07:13:03.087 回答