如何为此XML进行XML Flattening [英] How to do XML Flattening for this XML
本文介绍了如何为此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:
- 使用
System.Xml.XmlDocument
class 。它实现了DOM接口;如果文档的大小不是太大,这种方式是最简单和最好的。
参见 http://msdn.microsoft.com/en-us/library/system.xml.xmldocument.aspx [ ^ ]。 - 使用类
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 [ ^ ]。 - 使用类
系统.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 [ ^ ]。
- 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[^]. - Use the classes
System.Xml.XmlTextWriter
andSystem.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[^]. - Use the class
System.Xml.Linq.XDocument
; this is the most adequate way similar to that ofXmlDocument
, 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[^].
祝你好运。
您也可以使用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屋!
查看全文