我收到了一个XML文件,结构如下:
<?xml version="1.0" encoding="SHIFT-JIS" standalone="true"?>
<海外生産管理ファイル>
<PO番号>SV00039</PO番号>
<データベース>
<PO>
<Tbl_PO_H PO番号="SV00039">
<DATA>
<PO番号 LENGTH="13" TYPE="200">SV00039</PO番号>
<PO発行日 LENGTH="10" TYPE="200">2017/09/04</PO発行日>
</DATA>
</Tbl_PO_H>
<Tbl_PO_M PO番号="SV00039">
<DATA>
<PO番号 LENGTH="13" TYPE="200">SV00039</PO番号>
<PO行 LENGTH="4" TYPE="3">1</PO行>
</DATA>
</Tbl_PO_M>
</PO>
</データベース>
</海外生産管理ファイル>
但是当我使用以下代码生成它时:
private void generateXML(string fileName)
{
DataTable dth,dtm;
var xPONo = txtPONo.Text;
var _POPreNo = Mid(txtPONo.Text.Trim().ToUpper(), 3, 1);
if (!IsAllDigits(_POPreNo))
{
dth = get_DataforXML_HXX(txtPONo.Text);
dtm = get_DataforXML_MXX(txtPONo.Text);
}
else
{
dth = get_DataforXML_H(txtPONo.Text);
dtm = get_DataforXML_M(txtPONo.Text);
}
XmlDocument doc = new XmlDocument();
XmlDeclaration xmlDeclaration = doc.CreateXmlDeclaration("1.0", "SHIFT-JIS", "yes");
XmlElement root = doc.DocumentElement;
doc.InsertBefore(xmlDeclaration, root);
XmlElement rootNode = doc.CreateElement(string.Empty, "海外生産管理ファイル", string.Empty);
doc.AppendChild(rootNode);
XmlElement PONodeRoot = doc.CreateElement(string.Empty, "PO番号", string.Empty);
XmlText txtPONOx = doc.CreateTextNode(xPONo);
PONodeRoot.AppendChild(txtPONOx);
rootNode.AppendChild(PONodeRoot);
XmlElement databaseNode = doc.CreateElement(string.Empty, "データベース", string.Empty);
rootNode.AppendChild(databaseNode);
XmlElement PONode = doc.CreateElement(string.Empty, "PO", string.Empty);
databaseNode.AppendChild(PONode);
XmlElement Tbl_PO_HNode = doc.CreateElement(string.Empty, "Tbl_PO_H", string.Empty);
XmlAttribute Tbl_PO_HNodeAttribute = doc.CreateAttribute("PO番号");
Tbl_PO_HNodeAttribute.Value = xPONo;
Tbl_PO_HNode.Attributes.Append(Tbl_PO_HNodeAttribute);
PONode.AppendChild(Tbl_PO_HNode);
for (int i = 0; i < dth.Rows.Count; i++)
{
XmlElement DATAHNodex = doc.CreateElement(string.Empty, "DATA", string.Empty);
Tbl_PO_HNode.AppendChild(DATAHNodex);
for (int l = 0; l < dth.Columns.Count; l++)
{
XmlElement POHChildNodex =
doc.CreateElement(dth.Columns[l].ToString().Trim());
POHChildNodex.InnerText = dth.Rows[i][l].ToString().Trim();
DATAHNodex.AppendChild(POHChildNodex);
}
}
XmlElement Tbl_PO_MNode = doc.CreateElement(string.Empty, "Tbl_PO_M", string.Empty);
XmlAttribute Tbl_PO_MNodeAttribute = doc.CreateAttribute("PO番号");
Tbl_PO_MNodeAttribute.Value = xPONo;
Tbl_PO_MNode.Attributes.Append(Tbl_PO_MNodeAttribute);
PONode.AppendChild(Tbl_PO_MNode);
// ***********************************************************************
for (int i = 0; i < dtm.Rows.Count; i++)
{
XmlElement DATAMNodex = doc.CreateElement(string.Empty, "DATA", string.Empty);
Tbl_PO_MNode.AppendChild(DATAMNodex);
for (int l = 0; l < dtm.Columns.Count; l++)
{
XmlElement POMChildNodex =
doc.CreateElement(dtm.Columns[l].ToString().Trim());
POMChildNodex.InnerText = dtm.Rows[i][l].ToString().Trim();
DATAMNodex.AppendChild(POMChildNodex);
}
}
doc.PreserveWhitespace = true;
doc.Save(fileName);
}
我只能得到以下结果:
<?xml version="1.0" encoding="SHIFT-JIS" standalone="true"?>
<海外生産管理ファイル>
<PO番号>SV00039</PO番号>
<データベース>
<PO>
<Tbl_PO_H PO番号="SV00039">
<DATA>
<PO番号>SV00039</PO番号>
<PO発行日>2017/09/04</PO発行日>
</DATA>
</Tbl_PO_H>
<Tbl_PO_M PO番号="SV00039">
<DATA>
<PO番号>SV00039</PO番号>
<PO行>1</PO行>
</DATA>
</Tbl_PO_M>
</PO>
</データベース>
</海外生産管理ファイル>
输出结果没有属性LENGTH和TYPE。
但我们需要一些特殊情况。
那么,我的问题是如何使用上述结构(包括LENGTH和TYPE)生成XML文件?
请帮忙。非常感谢! 另一篇与此帖有关:Get the SQL table column schema with Datatype and Max Length in number value