将xml值转换为字符串(使用c#)

时间:2009-09-07 02:19:09

标签: c# xml


在xml文件中

<dummy1>
  <dummy2>
    <dummy3>
      <items>
        <item id="1111" name="Real_item_Name" url="i=1111">
          <filter name="itemLevel" value="item_value"/>
          <filter name="source" value="dummy4"/>
        </item>
       <item id="2222" name="Real_item_Name2" url="i=222">
          <filter name="itemLevel" value="item_value2"/>
          <filter name="source" value="dummy5"/>
        </item>
              //roop 
      </items>
    </dummy3>
  </dummy2>
</dummy1>

我怎样才能在c#中创建这个值 (插入字符串值)

Real_item_Name,1111,item_value
Real_item_Name2,2222,item_value2
Real_item_Name3,3333,item_value3

请告诉我dom或sax的例子......

2 个答案:

答案 0 :(得分:4)

有十几种不同的方法可以做到这一点。以下是使用XSL

的一个非常简单的示例

mytransform.xsl:

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
    <xsl:for-each select="items/item">
        <xsl:value-of select="@name" />, <xsl:value-of select="@id" />, <xsl:value-of select="filter/@value" />
    </xsl:for-each>
</xsl:template>

我们将XSL文件加载到转换对象中;指定输入XML和输出文本文件:

XslTransform xslt = new XslTransform();
xslt.Load("c:\\path\\mytransform.xsl");
xslt.Transform("c:\\path\\input.xml", "c:\\path\\output.txt");

查看XslTransform上的文档以获得更深入的使用,例如在内存流和XML对象中工作而不是文件路径。这虽然证明了核心概念。

答案 1 :(得分:3)

XDocument xml = XDocument.Load("foo.xml");
string csv = string.Join("\n",
    xml.Descendants("item").Select(item =>
        string.Format("{0}, {1}, {2}",
            (string)item.Attribute("name"),
            (string)item.Attribute("id"),
            (string)item.Elements("filter")
                        .Single(f => f.Attribute("name") == "itemLevel")
                        .Attribute("value")))
       .ToArray());