【发布时间】:2012-06-07 13:53:02
【问题描述】:
我有几个这样格式化的 xml 文件:
<ROOT>
<OBJECT>
<identity>
<id>123</id>
</identity>
<child2 attr = "aa">32</child2>
<child3>
<childOfChild3 att1="aaa" att2="bbb" att3="CCC">LN</childOfChild3>
</child3>
<child4>
<child5>
<child6>3ddf</child6>
<child7>
<childOfChild7 att31="RR">1231</childOfChild7>
</child7>
</child5>
</child4>
</OBJECT>
<OBJECT>
<identity>
<id>124</id>
</identity>
<child2 attr = "bb">212</child2>
<child3>
<childOfChild3 att1="ee" att2="ccc" att3="EREA">OP</childOfChild3>
</child3>
<child4>
<child5>
<child6>213r</child6>
<child7>
<childOfChild7 att31="EE">1233</childOfChild7>
</child7>
</child5>
</child4>
</OBJECT>
</ROOT>
我怎样才能这样格式化?:
<ROOT>
<OBJECT>
<id>123</id>
<child2>32</child2>
<attr>aa</attr>
<child3></child3>
<childOfChild3>LN</childOfChild3>
<att1>aaa</att1>
<att2>bbb</att2>
<att3>CCC</att3>
<child4></child4>
<child5></child5>
<child6>3ddf</child6>
<child7></child7>
<childOfChild7>1231</childOfChild7>
<att31>RR</att31>
</OBJECT>
<OBJECT>
<id>124</id>
<child2>212</child2>
<attr>bb</attr>
<child3></child3>
<childOfChild3>LN</childOfChild3>
<att1>ee</att1>
<att2>ccc</att2>
<att3>EREA</att3>
<child4></child4>
<child5></child5>
<child6>213r</child6>
<child7></child7>
<childOfChild7>1233</childOfChild7>
<att31>EE</att31>
</OBJECT>
</ROOT>
我知道一些 C#,所以也许那里有一个解析器?还是一些通用的xslt? xml 文件是从客户端接收的一些数据,因此我无法控制它们将其发送给我的方式。
L.E.基本上,当我试图在 excel 中测试这些数据时(例如,我想确保 childOfChild7 的属性对应于正确的身份 ID)我得到了很多空格。如果我在访问中导入以仅获取我想要的数据,我必须执行数千个子查询才能将它们全部放在一个漂亮的表中。基本上我只想查看一个对象的所有数据(一个对象 - 一行),然后删除/隐藏我不需要的列。
【问题讨论】:
-
为什么要重新格式化原来的xml?您的新格式看起来非常非规范化...
-
除了示例输出之外,您能否使用文字描述所需的转换,以便我们在推断转换规则时减少工作(和错误)?
标签: c# xml xslt xpath xml-parsing