如何为此XML进行XML Flattening [英] How to do XML Flattening for this XML

查看:99
本文介绍了如何为此XML进行XML Flattening的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好,

我有一个XML如下。



Hi All,
I have an XML as follows.

<?xml version="1.0" encoding="utf-8"?>
<cpeif:CustomerProfileResponse profileName="CustomerInformation" version="100" 

		 xmlns:cpeif=""	xmlns:ppns="" xmlns:tpns="">
        <cpeif:Person>		
		<ppns:CustID>1</ppns:CustID>
		<ppns:CPrefix>CPrefix3</ppns:CPrefix>
		<ppns:CFName>CFName3</ppns:CFName>
		<ppns:CMName >CMName3</ppns:CMName>
		<ppns:CLName>CLName3</ppns:CLName>
		</cpeif:Person>	
	<cpeif:TransactionDetail>		
		<tpns:CHHID>0</tpns:CHHID>
		<tpns:Transactions>
			<tpns:Transaction>
				<tpns:StoreID>0</tpns:StoreID>
				<tpns:CustID>1</tpns:CustID>
				<tpns:Item>Item1</tpns:Item>
			</tpns:Transaction>
			<tpns:Transaction>
				<tpns:StoreID>4294967295</tpns:StoreID>
				<tpns:CustID>1</tpns:CustID>
				<tpns:Item>Item2</tpns:Item>
			</tpns:Transaction>
			<tpns:Transaction>
				<tpns:StoreID>1</tpns:StoreID>
				<tpns:CustID>1</tpns:CustID>
				<tpns:Item>Item3</tpns:Item>
			</tpns:Transaction>
		</tpns:Transactions>
	</cpeif:TransactionDetail>	
	</cpeif:CustomerProfileResponse>





我需要使它成为以下





I need to make it as the following

<?xml version="1.0" encoding="utf-8"?>
<cpeif:CustomerProfileResponse profileName="CustomerInformation" version="100"

		 xmlns:cpeif="" xmlns:ppns="" xmlns:tpns=""

		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
	<cpeif:Customer>
		<ppns:CustID>1</ppns:CustID>
		<ppns:CPrefix>CPrefix3</ppns:CPrefix>
		<ppns:CFName>CFName3</ppns:CFName>
		<ppns:CMName >CMName3</ppns:CMName>
		<ppns:CLName>CLName3</ppns:CLName>	
		<tpns:StoreID>1</tpns:StoreID>
		<tpns:CustID>1</tpns:CustID>
		<tpns:SOrderNo>0</tpns:SOrderNo>
		<tpns:Date>0</tpns:Date>
		<tpns:Item>Item1</tpns:Item>		
	</cpeif:Customer>
	<cpeif:Customer>
		<ppns:CustID>1</ppns:CustID>
		<ppns:CPrefix>CPrefix3</ppns:CPrefix>
		<ppns:CFName>CFName3</ppns:CFName>
		<ppns:CMName >CMName3</ppns:CMName>
		<ppns:CLName>CLName3</ppns:CLName>
		<tpns:StoreID>4294967295</tpns:StoreID>
		<tpns:CustID>1</tpns:CustID>
		<tpns:SOrderNo>4294967295</tpns:SOrderNo>
		<tpns:Date>4294967295</tpns:Date>
		<tpns:Item>Item2</tpns:Item>
	</cpeif:Customer>
	<cpeif:Customer>
		<ppns:CustID>1</ppns:CustID>
		<ppns:CPrefix>CPrefix3</ppns:CPrefix>
		<ppns:CFName>CFName3</ppns:CFName>
		<ppns:CMName >CMName3</ppns:CMName>
		<ppns:CLName>CLName3</ppns:CLName>
		<tpns:StoreID>1</tpns:StoreID>
		<tpns:CustID>1</tpns:CustID>
		<tpns:SOrderNo>2</tpns:SOrderNo>
		<tpns:Date>1</tpns:Date>
		<tpns:Item>Item3</tpns:Item>
	</cpeif:Customer>
	</cpeif:CustomerProfileResponse>



这里客户正在做3个不同的交易,所以我需要显示三个不同的标签。任何人都可以帮我这样做。任何帮助表示赞赏。在此先感谢。



我在这里找到了类似的解决方案: http://stackoverflow.com/questions/9215273/flattening-an-xml-document 但是在我的情况下这没有用。

Kindest Regards

Sibeesh


Here customer is doing 3 different transaction, so i need to show as three different tabs.Can any one help me doing this. Any help is appreciated. Thanks in advance.

I have found a similar solution here :http://stackoverflow.com/questions/9215273/flattening-an-xml-document but that is not working out in my case.
Kindest Regards
Sibeesh

推荐答案

使用.NET FCL提供的XML解析和生成的工具。这是我对他们的简短概述:



Use XML parsing and generated facilities offered by .NET FCL. This is my short overview of them:

  1. 使用 System.Xml.XmlDocument class 。它实现了DOM接口;如果文档的大小不是太大,这种方式是最简单和最好的。
    参见 http://msdn.microsoft.com/en-us/library/system.xml.xmldocument.aspx [ ^ ]。
  2. 使用类 System.Xml.XmlTextWriter System.Xml.XmlTextReader ;这是最快的阅读方式,特别是你需要跳过一些数据。
    参见 http://msdn.microsoft.com/en-us/library/system.xml.xmlwriter.aspx [ ^ ], http://msdn.microsoft.com/en-us/library/system.xml.xmlreader.aspx [ ^ ]。
  3. 使用类系统.Xml.Linq.XDocument ;这是类似于 XmlDocument 的最合适的方式,支持LINQ to XML Programming。
    参见 http://msdn.microsoft.com/en-us/library/system.xml.xmldocument.aspx [ ^ ],http://msdn.microsoft.com/en-us/library/bb387063.aspx [ ^ ]。
  1. Use System.Xml.XmlDocument class. It implements DOM interface; this way is the easiest and good enough if the size if the document is not too big.
    See http://msdn.microsoft.com/en-us/library/system.xml.xmldocument.aspx[^].
  2. Use the classes System.Xml.XmlTextWriter and System.Xml.XmlTextReader; this is the fastest way of reading, especially is you need to skip some data.
    See http://msdn.microsoft.com/en-us/library/system.xml.xmlwriter.aspx[^], http://msdn.microsoft.com/en-us/library/system.xml.xmlreader.aspx[^].
  3. Use the class System.Xml.Linq.XDocument; this is the most adequate way similar to that of XmlDocument, supporting LINQ to XML Programming.
    See http://msdn.microsoft.com/en-us/library/system.xml.xmldocument.aspx[^], http://msdn.microsoft.com/en-us/library/bb387063.aspx[^].





祝你好运。

-SA


您也可以使用XSLT。如果您可以定义转换规范,则从代码应用具体转换非常简单。请参阅: http://msdn.microsoft.com /en-us/library/system.xml.xsl.xslcompiledtransform(v=vs.110).aspx [ ^ ]
You could use XSLT also. If you can define the transformation specification, it is quite simple to apply concrete transformation from code. See: http://msdn.microsoft.com/en-us/library/system.xml.xsl.xslcompiledtransform(v=vs.110).aspx[^]


这篇关于如何为此XML进行XML Flattening的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆