首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从ubl-tr xml中选择和更改节点的值

从ubl-tr xml中选择和更改节点的值
EN

Stack Overflow用户
提问于 2018-10-07 23:12:05
回答 2查看 378关注 0票数 0

我想在c#中选择并更改下面xml的一个节点的值。这是一个ubl-tr xml示例。假设我想更改cbc:UUID的值。

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet type="text/xsl" href="general.xslt"?>
<Invoice xsi:schemaLocation="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2 ../xsdrt/maindoc/UBL-Invoice-2.1.xsd" 
xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" 
xmlns:n4="http://www.altova.com/samplexml/other-namespace" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" 
xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" 
xmlns:ext="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2">
  <ext:UBLExtensions>
    <ext:UBLExtension>
      <ext:ExtensionContent>
        <n4:auto-generated_for_wildcard/>
      </ext:ExtensionContent>
    </ext:UBLExtension>
  </ext:UBLExtensions>
  <cbc:UBLVersionID>2.1</cbc:UBLVersionID>
  <cbc:CustomizationID>TR1.2</cbc:CustomizationID>
  <cbc:ProfileID>TEMELFATURA</cbc:ProfileID>
  <cbc:ID>GIB20090000000001</cbc:ID>
  <cbc:CopyIndicator>false</cbc:CopyIndicator>
  <cbc:UUID>F47AC10B-58CC-4372-A567-0E02B2C3D479</cbc:UUID>
  <cbc:IssueDate>2009-01-05</cbc:IssueDate>
  <cbc:IssueTime>14:42:00</cbc:IssueTime>
  <cbc:InvoiceTypeCode>SATIS</cbc:InvoiceTypeCode>
  <cbc:DocumentCurrencyCode>TRY</cbc:DocumentCurrencyCode>
  <cbc:LineCountNumeric>1</cbc:LineCountNumeric>
</Invoice>
EN

回答 2

Stack Overflow用户

发布于 2018-10-08 13:51:07

以下是使用XML Linq解决方案。

代码语言:javascript
复制
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;

namespace ConsoleApplication1
{
    class Program
    {
        const string FILENAME = @"c:\temp\test.xml";
        static void Main(string[] args)
        {
            XDocument doc = XDocument.Load(FILENAME);

            XElement UUID = doc.Descendants().Where(x => x.Name.LocalName == "UUID").FirstOrDefault();

            UUID.SetValue("new value");
        }
    }
}
票数 0
EN

Stack Overflow用户

发布于 2020-05-22 02:17:37

您可以使用UblTr NuGet package反序列化为invoice对象并更改值

代码语言:javascript
复制
XmlSerializer serializer = new XmlSerializer(typeof(UblTr.MainDoc.InvoiceType));

using (StreamReader reader = new StreamReader(path))
{
      var invoice = (UblTr.MainDoc.InvoiceType)serializer.Deserialize(reader);
      invoice.UUID.Value = "new uuid";
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52689876

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档