【发布时间】:2016-08-21 15:46:22
【问题描述】:
我有一个如下所示的数据表
DataTable dt = new DataTable();
dt.Columns.Add("region", typeof(string));
dt.Columns.Add("technology", typeof(string));
dt.Columns.Add("sitetype", typeof(string));
dt.Columns.Add("status", typeof(string));
dt.Columns.Add("siteid", typeof(string));
dt.Columns.Add("cellid", typeof(int));
dt.Columns.Add("LONGITUDE", typeof(double));
dt.Columns.Add("LATITUDE", typeof(double));
dt.Columns.Add("SCALE", typeof(double));
dt.Rows.Add(new object[] { "BNGLR", "G", "MACRO", "WORKING", "2330", 23301, 24.4251, 25.6011, 87});
dt.Rows.Add(new object[] { "BNGLR", "G", "MACRO", "WORKING", "2330", 23302, 24.4251, 25.6011, 88});
dt.Rows.Add(new object[] { "BNGLR", "G", "MACRO", "WORKING", "2330", 23303, 24.4251, 25.6011, 89 });
dt.Rows.Add(new object[] { "BNGLR", "G", "MACRO", "OTHERS", "2330", 23304, 27.4251, 54.6011, 89 });
dt.Rows.Add(new object[] { "BNGLR", "G", "MICRO", "WORKING", "2331", 23311, 25.4251, 25.6011, 90 });
dt.Rows.Add(new object[] { "BNGLR", "G", "INDOOR", "WORKING", "2332", 23321, 26.4251, 25.6011, 87 });
dt.Rows.Add(new object[] { "BNGLR", "U", "MACRO", "WORKING", "4330", 43301, 37.4251, 25.6011, 82 });
dt.Rows.Add(new object[] { "BNGLR", "L", "MACRO", "WORKING", "5330", 53301, 19.4251, 15.6011, 80 });
,我想替换以*** 开头的xml 占位符,以便从上述数据表构建一个格式良好的xml。
xml模板如下图
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2"
xmlns:kml="http://www.opengis.net/kml/2.2" xmlns:json="http://www.w3.org/2005/Json">
<Folder>
<name>***Region***</name>
<open>1</open>
<Folder>
<name>***Technology***</name>
<open>1</open>
<Folder>
<name>***SiteType***</name>
<Folder>
<name>***STATUS***</name>
<Document>
<name>POINTS</name>
<Placemark>
<name>***Site Id***</name>
<description><ul>
<li>CI = ***CI***
<li>LONGITUDE = ***LONGITUDE***
<li>LATITUDE = ***LATITUDE***</ul></li>
</description>
<Point>
<gx:drawOrder>3</gx:drawOrder>
<coordinates>***LONGITUDE***,***LATITUDE***,***SCALE***</coordinates>
</Point>
</Placemark>
</Document>
<Document>
<name>LINES</name>
<Style id="Zamoras0_0">
</Style>
<Placemark>
<name>***Site Id***</name>
<styleUrl>#Zamoras0_0</styleUrl>
<MultiGeometry>
<LineString>
<gx:drawOrder>3</gx:drawOrder>
<coordinates>***LONGITUDE***,***LATITUDE***,***SCALE***</coordinates>
</LineString>
</MultiGeometry>
</Placemark>
</Document>
</Folder>
</Folder>
</Folder>
</Folder>
</kml>
重要的是每个 cellid(CI) 带有相同的 siteid、状态、sittype 需要在两个 <Document> 部分下的两个占位符上递增,如下所示(仅文档我正在发布的部分)
<Document>
<name>POINTS</name>
//for 23301
<Placemark>
<name>2330</name>
<description><ul>
<li>CI = 23301
<li>LONGITUDE = 24.4251
<li>LATITUDE = 25.6011</ul></li>
</description>
<Point>
<gx:drawOrder>3</gx:drawOrder>
<coordinates>24.4251, 25.6011, 87</coordinates>
</Point>
</Placemark>
//for 23302
<Placemark>
<name>2330</name>
<description><ul>
<li>CI = 23302
<li>LONGITUDE = 24.4251
<li>LATITUDE = 25.6011</ul></li>
</description>
<Point>
<gx:drawOrder>3</gx:drawOrder>
<coordinates>24.4251, 25.6011, 87</coordinates>
</Point>
</Placemark>
</Document>
<Document>
<name>LINES</name>
<Style id="Zamoras0_0">
</Style>
//for 23301
<Placemark>
<name>2330</name>
<styleUrl>#Zamoras0_0</styleUrl>
<MultiGeometry>
<LineString>
<gx:drawOrder>3</gx:drawOrder>
<coordinates>24.4251, 25.6011, 87</coordinates>
</LineString>
</MultiGeometry>
</Placemark>
//for 23302
<Placemark>
<name>2330</name>
<styleUrl>#Zamoras0_0</styleUrl>
<MultiGeometry>
<LineString>
<gx:drawOrder>3</gx:drawOrder>
<coordinates>24.4251, 25.6011, 87</coordinates>
</LineString>
</MultiGeometry>
</Placemark>
</Document>
我来自 c++ 方面,我在这里真的很糟糕,任何人都可以帮助我 我确实喜欢下面显示的没有任何运气
编辑 结果应该如下所示
<Document>
<name>POINTS</name>
//for 23301
<Placemark>
<name>2330</name>
<description><ul>
<li>CI = 23301
<li>LONGITUDE = 24.4251
<li>LATITUDE = 25.6011</ul></li>
</description>
<Point>
<gx:drawOrder>3</gx:drawOrder>
<coordinates>24.4251, 25.6011, 87</coordinates>
</Point>
</Placemark>
//for 23302
<Placemark>
<name>2330</name>
<description><ul>
<li>CI = 23302
<li>LONGITUDE = 24.4251
<li>LATITUDE = 25.6011</ul></li>
</description>
<Point>
<gx:drawOrder>3</gx:drawOrder>
<coordinates>24.4251, 25.6011, 87</coordinates>
</Point>
</Placemark>
</Document>
<Document>
<name>LINES</name>
<Style id="Zamoras0_0">
</Style>
//for 23301
<Placemark>
<name>2330</name>
<styleUrl>#Zamoras0_0</styleUrl>
<MultiGeometry>
<LineString>
<gx:drawOrder>3</gx:drawOrder>
<coordinates>24.4251, 25.6011, 87</coordinates>
</LineString>
</MultiGeometry>
</Placemark>
//for 23302
<Placemark>
<name>2330</name>
<styleUrl>#Zamoras0_0</styleUrl>
<MultiGeometry>
<LineString>
<gx:drawOrder>3</gx:drawOrder>
<coordinates>24.4251, 25.6011, 87</coordinates>
</LineString>
</MultiGeometry>
</Placemark>
</Document
两个documents(Points and Lines) 对于每个具有相同状态的cellids(在这里工作)和placemarks 应该同时为每个cellids 递增
【问题讨论】:
-
@ Sepehr Farshid 我没有创建新模板,我有 xml 模板,需要将其替换为来自数据表的数据,同时保持层次结构
-
这是您第三次发布同样的问题。以前的帖子我提供了有效的代码。为什么又问同样的问题?使用以前的代码很容易增加 CI。
-
@jdweng 这段代码的问题是每个状态只有两个文档部分,内部文档部分每个都有地标,每个单元格应该同时增加。这里的文档超出状态并且每次都重复.Nutshell 每个状态只有两个文档