XML到数据库,并再次生成具有更新的数据库值的XML
本文关键字:XML 数据库 更新 | 更新日期: 2023-09-27 17:59:30
我有将XML导入数据库的要求,在使用应用程序后,将对这些数据进行一些处理,并且需要使用这些更新的值再次生成XML。
我有需要导入和生成的xml的XSD。这两种XML的XSD将保持不变。
所以请给我建议最好的方法。
Book.xsd
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://www.contoso.com/books" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="bookstore">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="book">
<xs:complexType>
<xs:sequence>
<xs:element name="title" type="xs:string" />
<xs:element name="author">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="name" type="xs:string" />
<xs:element minOccurs="0" name="first-name" type="xs:string" />
<xs:element minOccurs="0" name="last-name" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="price" type="xs:decimal" />
</xs:sequence>
<xs:attribute name="genre" type="xs:string" use="required" />
<xs:attribute name="publicationdate" type="xs:date" use="required" />
<xs:attribute name="ISBN" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Book.xml(已导入)
<?xml version="1.0" encoding="utf-8"?>
<bookstore xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.contoso.com/books">
<book genre="Religious" publicationdate="2013-02-13" ISBN="SampleISBN">
<title>Live and Let Live</title>
<author>
<name>Donald Allen</name>
<first-name>Allen</first-name>
<last-name>Donald</last-name>
</author>
<price>150</price>
</book>
</bookstore>
现在假设在对上述xml数据进行一些处理后,特定书籍的价格更新为180,现在如果我再次将其导出为xml,则更新后的价格应如下示例xml
Book.xml(需要生成)
<?xml version="1.0" encoding="utf-8"?>
<bookstore xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.contoso.com/books">
<book genre="Religious" publicationdate="2013-02-13" ISBN="SampleISBN">
<title>Live and Let Live</title>
<author>
<name>Donald Allen</name>
<first-name>Allen</first-name>
<last-name>Donald</last-name>
</author>
<price>180</price>
</book>
</bookstore>
您有两个主要路径:
-
使用XSD使用XSD.exe创建C#类,然后使用XmlSerializer在.NET对象之间"转换"xml。参见文件
xsd.exe yourxsd.xsd /classes
-
或者使用LINQ to Xml读取Xml,进行更新并将Xml写回存储。(实际上不需要XSD)文档
如果你只更新价格,我建议2,如果你需要访问更多的字段,那么1。组合也是可能的。