gpt4 book ai didi

c# - 读取 xml 文档并更新所有字段 c#

转载 作者:数据小太阳 更新时间:2023-10-29 02:56:21 25 4
gpt4 key购买 nike

我正在尝试读取 xml 文件并更新我的 xml 的所有值

<adf>
<prospect>
<requestdate>2015-10-29 07-38-22</requestdate>
<id sequence="1" source="admin.ss.com">admin.ss.com</id>
<vehicle interest="buy" status="">
<id sequence="1" source=""></id>
<year></year>
<make></make>
<model>camry</model>
<vin></vin>
<stock></stock>
<trim></trim>
</vehicle>
<customer>
<contact primarycontact="1">
<name part="first">Jessica</name>
<name part="last">Sonntag</name>
<email>js@test.com</email>
<phone type="phone" time="day">555-585-5555</phone>
<address>
<street line="1"></street>
<city></city>
<regioncode></regioncode>
<postalcode></postalcode>
<country></country>
</address>
</contact>
<comments>Vehicle Year: 2011 Comments: </comments>
</customer>
<provider>
<name part="full">ST</name>
<service> Engine Marketing</service>
<phone>1-866-572-3952</phone>
</provider>
</prospect>
</adf>

所以我选择如下节点

 var items = (from item in xmlDoc.Descendants("requestdate")
select item).ToList();

然后我只能更新 requestdata 标签值,所以我是否必须对所有标签重复相同的值,或者是否有任何好的方法来完成此操作。

问候

最佳答案

有一种简单的方法可以做到这一点。这是一颗隐藏的 gem 。大多数人可能不知道这一点。此功能出现在 VS2013 中,称为“将 XML 粘贴为类”。

  1. 保存您的 xml(例如:MyXml.XML)
  2. 创建一个新的控制台项目
  3. 在 Visual Studio 中打开 Xml
  4. 复制xml的所有内容(Ctl+A,Ctl+C)
  5. 向您的项目添加一个新类。你可以给任何你喜欢的名字。
  6. 转到“编辑”>“选择性粘贴”>“将 XML 粘贴为类”。
  7. 向您的项目添加另一个类。然后向该类添加以下两个方法。

      public static string Serialise<T>(T serialisableObject)
    {
    var doc = new XmlDocument();
    using (var stream = new StringWriter())
    {
    var settings = new XmlWriterSettings();
    settings.OmitXmlDeclaration = true;

    XmlWriter xmlWriter = XmlWriter.Create(stream, settings);
    var ns = new XmlSerializerNamespaces();
    ns.Add("", "");

    var xmlSerializer = new XmlSerializer(typeof(T));
    xmlSerializer.Serialize(xmlWriter, serialisableObject, ns);
    doc.LoadXml(stream.ToString());
    }
    return doc.InnerXml;
    }

    public static T Deserialise<T>(string xml)
    {
    T list;
    using (var reader = new StringReader(xml))
    {
    var serialiser = new XmlSerializer(typeof(T));
    list = (T)serialiser.Deserialize(reader);
    }
    return list;
    }

然后在您的控制台应用程序中使用 Main 方法;添加这个。

            var myObj = new adf();
myObj.prospect = new adfProspect();
myObj.prospect.customer = new adfProspectCustomer(){comments = "dgsrtetetete"};
//populate all fields.....

var xml = MySerializer.Serialise(myObj);
File.WriteAllText(@"C:\myNewXml.xml", xml);

就是这样。现在你可以用同样的方式将一个 xml 对象反序列化到你的类中。

关于c# - 读取 xml 文档并更新所有字段 c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33803561/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com