我目前正在将有效XML文件中的值导入SQL数据库。下面是xml的片段。
<Suppliers>
<SupplierDetails>
<Name>Some Name</Name>
<Logo>my-logo.jpg</Logo>
<ID>4070</ID>
<DateCertified>14/10/2016 00:00:00</DateCertified>
<Description>Some description</Description>
<Brands>Brand1</Brands>
<Brands>Brand2</Brands>
<Brands>Brand3</Brands>
<Brands>Brand4</Brands>
<SubBrands>SubBrand1</SubBrands>
<SubBrands>SubBrand2</SubBrands>
<SubBrands>SubBrand3</SubBrands>
<SubBrands>HVAC</SubBrands>
</SupplierDetails>
</Suppliers>
我遇到的问题是品牌和子品牌列表。所有其他值,如名称,描述等都很好,并返回没有他们的元素&#34;标签&#34;。但是,Brands / SubBrands看起来像这样。
<Brands>Brand1</Brands>
我只需要&#34; Brand1&#34;位。
这就是我绑定我的ViewModel
的方式var model =
from xml in xmlDoc.Descendants("SupplierDetails")
select new SupplierViewModel
{
Name = xml.Element("Name").ToString(),
Logo = xml.Element("Logo").ToString(),
Supplier_Id = (int)xml.Element("ID"),
DateCertified = xml.Element("DateCertified").ToString(),
Description = xml.Element("Description").ToString(),
Brands = (from b in xml.Elements("Brands") select b.ToString()).ToList(),
SubBrands = (from sb in xml.Elements("SubBrands") select sb.ToString()).ToList()
};
我的ViewModel
public class SupplierViewModel
{
public int Id { get; set; }
// XML Elements
[XmlElement("Name")]
public string Name { get; set; }
[XmlElement("LOGO")]
public string Logo { get; set; }
[XmlElement("ID")]
public int Supplier_Id { get; set; }
[XmlElement("DateCertified")]
public string DateCertified { get; set; }
[XmlElement("Description")]
public string Description { get; set; }
[XmlElement("Brands")]
public List<string> Brands { get; set; }
[XmlElement("SubBrands")]
public List<string> SubBrands { get; set; }
}
我知道我可以使用一些RegEx删除标签,但有没有其他方法可以实时执行此操作...?
提前致谢。 :)
答案 0 :(得分:0)
应该足以阅读.Value
而非使用.ToString()
string xmlString = "<Suppliers><SupplierDetails><Name>Some Name</Name><Brands>Brand1</Brands><Brands>Brand2</Brands></SupplierDetails></Suppliers>";
var xmlDoc = XDocument.Parse(xmlString);
var model =
from xml in xmlDoc.Descendants("SupplierDetails")
select new SupplierViewModel {
Name = xml.Element("Name").ToString(),
Brands = (from b in xml.Elements("Brands") select b.Value).ToList(),
};
var YourModel = model.ToList()[0];