- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用 webapi MVC 模板使用默认的 XmlSerializer 我得到以下输出
OUTPUT:
String
DTO class
[XmlRoot("ClassName")]
[DataContract]
public class ClassName
{
[DataMember]
[XmlElement("Child1")]
public string Child1{ get; set; }
[DataMember]
[XmlElement("Child2",IsNullable =true)]
public string Child2{ get; set; }
}
我通过覆盖默认的 xmlformatter 设法删除了根节点命名空间
//Code to remove root node namespace
using (XmlWriter xw = XmlWriter.Create(streamWriter, settings))
{
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("", "");
serializer.Serialize(xw, value, ns);
}
但是现在根节点中的命名空间被移除了,但是子节点仍然有命名空间
Current Output:
String
Expected output:
String
1 Câu trả lời
命名空间 “http://www.w3.org/2001/XMLSchema-instance”
nhu cầu 添加,因为您指定了 XmlElementAttribute.IsNullable = true
vì Child2
. Đây là tài liệu 中有解释。 :
The XML schema specification for structures allows an XML document to explicitly signal that an element's content is missing. Such an element contains the attribute xsi:nil set to true. For more information, see the World Wide Web Consortium (www.w3.org) specification, "XML Schema Part 1: Structures".
If the IsNullable property is set to true, the xsi:nil attribute is generated for class members that have been set to null. For example if you set a field named MyStringArray to null, the XmlSerializer generates the following XML code.
If the IsNullable property is false, no XML element is generated for class members that have been set to null.
"xsi:nil"
TRONG xsi
是命名空间 http://www.w3.org/2001/XMLSchema-instance 的快捷方式
giống Xsi:nil Attribute Binding Support 中所述.由于 xsi:nil
是一个 w3c 标准属性(定义为 đây ),省略 namespace 会创建非标准 XML,接收系统无法正确理解。请注意,XmlSerializer
仅在需要时发出 không
属性和关联的命名空间。
new ClassName() { Child1 = null, Child2 = string.Empty }
将不包含属性或命名空间。
顺便说一下,在 XML 中消除可能的混淆
只有 không
属性hiện hữu "http://www.w3.org/2001/XMLSchema-instance"
命名空间,因为只有属性具有 p2:
Tiền tố. Child2
元素本身位于默认 namespace 中,因此 namespace 的存在不会改变 XML 的整体含义。事实上,没有理由不在根节点上保留 xsi
Và xsd
命名空间。因为它们是命名命名空间而不是默认命名空间,元素和属性只有在它们具有适当的前缀时才会属于它们。
也就是说,如果出于某种原因您phải使用自定义 không
属性来表示空文本值,您将需要实现自定义属性来序列化和反序列化它,例如:
[XmlRoot("ClassName")]
[DataContract]
public class ClassName
{
[DataMember]
[XmlElement("Child1")]
public string Child1 { get; set; }
[DataMember]
[XmlIgnore]
public string Child2 { get; set; }
[XmlElement("Child2")]
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never), windowBrowsable(windowBrowsableState.Never)]
[IgnoreDataMember]
public CustomXmlNilTextWrapper Child2Xml { get { return Child2; } set { Child2 = value; } }
}
public struct CustomXmlNilTextWrapper
{
bool forceNull;
string value;
public static implicit operator CustomXmlNilTextWrapper(string value)
{
return new CustomXmlNilTextWrapper(value);
}
public static implicit operator string(CustomXmlNilTextWrapper wrapper)
{
return wrapper.Value;
}
public CustomXmlNilTextWrapper(string value)
{
this.value = value;
this.forceNull = value == null;
}
[XmlAttribute("nil")]
public bool ForceNull { get { return forceNull; } set { forceNull = value; } }
public bool ShouldSerializeForceNull() { return ForceNull == true; }
[XmlText]
public string Value { get { return ForceNull ? null : value ?? string.Empty; } set { this.value = value; } }
}
序列化此类的默认实例将产生如下输出:
这满足了您没有命名空间的要求 - 但在我看来不值得这么麻烦。
原型(prototype) fiddle展示一切是如何运作的。
关于c# - 在 c# web api 中序列化 xml 时删除命名空间内部节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35697018/
Như đã hỏi trong tiêu đề, tôi có hai tệp XML có cấu trúc sau: A.xml //ở đây tôi muốn đưa B.xml vào
Tôi có một tập tin xml. Theo yêu cầu của tôi, tôi cần cập nhật thẻ trống như tôi cần thay đổi thành . Có thể thay đổi thẻ như vậy không.. Cảm ơn... Câu trả lời hay nhất var xmlString = " "; var properString
Tôi có XML đơn giản như thế này: Bài hát đang phát 09:41:18 Frederic Delius Violin Son
Ở nơi làm việc của tôi, chúng tôi có lớp XML riêng để xây dựng DOM nhưng tôi không chắc chúng tôi nên xử lý các khoảng trắng liên tiếp như thế nào? Ví dụ, khi Hello World được đọc vào DOM, nút văn bản phải chứa Hello và World.
Tôi có 2 tệp xml sau và tôi phải xem qua tệp XML thứ 2 để so sánh wd:Task_Name_ID và TaskID. Ví dụ, Tệp XML chính-1 wd:Task_Name_ID có nội dung sau
Tôi có một chế độ xem XML trong ứng dụng Rails mà tôi cần chèn XML từ một tệp khác để phục vụ mục đích thử nghiệm. Tôi muốn nói "người xây dựng, chỉ cần điền ngẫu nhiên vào chuỗi này vì nó đã là XML" nhưng tôi không thấy bất cứ điều gì trong tài liệu thực hiện điều này
Tôi đang xây dựng lại một số nguồn cấp dữ liệu XML, vì vậy tôi đang tìm hiểu xem khi nào nên sử dụng các phần tử và khi nào nên sử dụng các thuộc tính với XML. Một số trang web nói rằng "dữ liệu nằm trong các phần tử, siêu dữ liệu nằm trong các thuộc tính". Vậy, sự khác biệt giữa hai loại này là gì? Hãy lấy W3Schools làm ví dụ:
Có phải XML được định dạng tốt khi có hai khai báo XML trong cùng một tài liệu không? Xin chào, tôi nghĩ là không, nhưng tôi không thể tìm thấy nguồn nào hỗ trợ tôi. Từ Ngôn ngữ đánh dấu mở rộng
Tôi cần nhúng một tài liệu XML tùy ý (hợp lệ về mặt cú pháp) vào một tài liệu XML bao bọc. Các tài liệu nhúng được coi là văn bản thuần túy và không cần phải phân tích cú pháp khi phân tích tài liệu được gói. Tôi biết về "thủ thuật CDATA", nhưng nếu bản thân tài liệu XML bên trong chứa CDATA
Trình phân tích cú pháp XML và bộ xử lý XML có phải là hai thứ khác nhau không? Đây có phải là hai công việc khác nhau không? Câu trả lời hay nhất Trình phân tích cú pháp XML và trình xử lý XML là giống nhau. Không áp dụng cho các ngôn ngữ khác. XML là ngôn ngữ đánh dấu dữ liệu có mục đích chung. Phân tích cú pháp các tập tin XML
Tôi sử dụng mã perl này để đọc XML từ một tệp và ghi vào tệp khác (toàn bộ tập lệnh của tôi có mã để thêm thuộc tính): #!usr/bin/perl -w use strict; use XML::DOM; use
Tôi đang viết một kịch bản về một sự kiện lịch sử mà tôi có hiểu biết hạn chế. Đối tượng A có kiểu system.xml.xmlelement và tôi cần chuyển đổi nó sang kiểu system.xml.xmldocument để so sánh với đối tượng B (kiểu
Tôi có hai tệp XML sau: Tệp 1 101 102 103 501 502 503
Tôi có hai tệp XML sau: Tệp 1 101 102 103 501 502 503
Tôi có một trường hợp mà tôi có một xml làm đầu vào và một xml khác làm đầu ra: Tôi có thể lựa chọn mã hóa bằng XSL và giải mã thông qua JAXB. Xét về hiệu suất, có sự khác biệt thực sự nào không? Câu trả lời tốt nhất là đầu tiên,
Tôi có XML chứa XML và tôi muốn phân tích cú pháp nó bằng JAXB qwqweqwezxcasdasd eee parser public static NotificationRequest parse(Strin
xml: mario de2f15d014d40b93578d255e6221fd60 Mario F 23 maria maria
Tôi gặp lỗi sau khi cố gắng cập nhật mảng tệp xml. Đoạn mã: File dir = new File("c:\\XML"); File[] files = dir.listFiles(new Filename
Làm thế nào tôi có thể thực hiện được điều gì đó như thế này: PS /home/nicholas/powershell> PS /home/nicholas/powershell> $date=(Get-Date | ConvertT
Tôi đang gặp khó khăn khi xóa một nút khỏi tệp xml. Tôi đã tìm thấy rất nhiều ví dụ về những người khác thực hiện điều này trong PowerShell thông qua nhiều cách khác nhau và mã bên dưới có vẻ giống với nhiều ví dụ khác mà tôi đã thấy, nhưng tôi không nhận được kết quả mong muốn. Mục tiêu của tôi là
Tôi là một lập trình viên xuất sắc, rất giỏi!