我正在尝试从数据集更新XML文件,XML文件将用于更新adobe illustrator中的图稿。我试图从数据集中的数据附加XML文件中的每个节点。目前,我正在循环使用数据集并使用。
正确检索数据Dim ds As New DataSet
ds.Tables.Add(dt)
For Each DataRow As DataRow In ds.Tables(0).Rows
Dim strDatasheet As String = DataRow("Dataset").ToString
Dim strRev As String = DataRow("Rev").ToString
Dim strName As String = DataRow("Name").ToString
Dim strDesc As String = DataRow("Desc").ToString
Dim strMarketing As String = DataRow("Marketing").ToString
Dim strProject As String = DataRow("Project").ToString
Dim sampleDataSets As XElement = doc.Descendants().Where(Function(x) x.Name.LocalName = "sampleDataSets").FirstOrDefault()
Dim ns_v As XNamespace = sampleDataSets.GetNamespaceOfPrefix("v")
Dim sampleDataSet As List(Of XElement) = sampleDataSets.Elements(ns_v + "sampleDataSet").ToList()
Dim dataset As XElement = sampleDataSet(0).Elements().Where(Function(x) x.Name.LocalName = "Dataset").FirstOrDefault()
Dim ns_dataset As XNamespace = dataset.Name.Namespace
dataset.Element(ns_dataset + "p").Value = strDatasheet
Dim rev As XElement = sampleDataSet(0).Elements().Where(Function(x) x.Name.LocalName = "Rev").FirstOrDefault()
rev.Element(ns_dataset + "p").Value = strRev
Dim name As XElement = sampleDataSet(0).Elements().Where(Function(x) x.Name.LocalName = "Name").FirstOrDefault()
name.Element(ns_dataset + "p").Value = strName
Dim desc As XElement = sampleDataSet(0).Elements().Where(Function(x) x.Name.LocalName = "Desc").FirstOrDefault()
desc.Element(ns_dataset + "p").Value = strDesc
Dim marketing As XElement = sampleDataSet(0).Elements().Where(Function(x) x.Name.LocalName = "Marketing").FirstOrDefault()
marketing.Element(ns_dataset + "p").Value = strMarketing
Dim project As XElement = sampleDataSet(0).Elements().Where(Function(x) x.Name.LocalName = "Project").FirstOrDefault()
project.Element(ns_dataset + "p").Value = strProject
Next
但是我不确定如何更新xml文件。任何人都可以就如何附加XML文件的数据集,Rev,Name,Desc,Marketing和Project节点提供任何指导。
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20001102//EN" "http://www.w3.org/TR/2000/CR-SVG-20001102/DTD/svg-20001102.dtd" [
<!ENTITY ns_graphs "http://ns.adobe.com/Graphs/1.0/">
<!ENTITY ns_vars "http://ns.adobe.com/Variables/1.0/">
<!ENTITY ns_imrep "http://ns.adobe.com/ImageReplacement/1.0/">
<!ENTITY ns_custom "http://ns.adobe.com/GenericCustomNamespace/1.0/">
<!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
<!ENTITY ns_extend "http://ns.adobe.com/Extensibility/1.0/">
]>
<svg>
<variableSets xmlns="ns_vars;">
<variableSet varSetName="binding1" locked="none">
<variables>
<variable varName="Dataset" trait="textcontent" category="ns_flows;"></variable>
<variable varName="Rev" trait="textcontent" category="ns_flows;"></variable>
<variable varName="Name" trait="textcontent" category="ns_flows;"></variable>
<variable varName="Desc" trait="textcontent" category="ns_flows;"></variable>
<variable varName="Marketing" trait="textcontent" category="ns_flows;"></variable>
<variable varName="Project" trait="textcontent" category="ns_flows;"></variable>
</variables>
<v:sampleDataSets xmlns:v="http://ns.adobe.com/Variables/1.0/" xmlns="http://ns.adobe.com/GenericCustomNamespace/1.0/">
<v:sampleDataSet dataSetName="HYX8YA00">
<Dataset>
<p>YXTX1A00</p>
</Dataset>
<Rev>
<p>A00</p>
</Rev>
<Name>
<p>YXTX1</p>
</Name>
<Desc>
<p>LBL,COO,KS,ESPL,E5250 15181</p>
</Desc>
<Marketing>
<p>Latitude E5250 15181</p>
</Marketing>
<Project>
<p>Houston 12</p>
</Project>
</v:sampleDataSet>
</v:sampleDataSets>
</variableSet>
</variableSets>
</svg>
答案 0 :(得分:1)
这对命名空间来说有点棘手。见下面的代码
Imports System.Xml
Imports System.Xml.Linq
Module Module1
Const FILENAME As String = "c:\temp\test.xml"
Sub Main()
Dim doc As XDocument = XDocument.Load(FILENAME)
Dim sampleDataSets As XElement = doc.Descendants().Where(Function(x) x.Name.LocalName = "sampleDataSets").FirstOrDefault()
Dim ns_v As XNamespace = sampleDataSets.GetNamespaceOfPrefix("v")
Dim sampleDataSet As List(Of XElement) = sampleDataSets.Elements(ns_v + "sampleDataSet").ToList()
Dim dataset As XElement = sampleDataSet(0).Elements().Where(Function(x) x.Name.LocalName = "Dataset").FirstOrDefault()
Dim ns_dataset As XNamespace = dataset.Name.Namespace
dataset.Element(ns_dataset + "p").Value = 123
End Sub
End Module