标签: xml-nil

表示空XML元素的正确方法是什么?

我看过null以下几种方式表示的元素:

元素存在于xsi:nil="true":

 <book>
     <title>Beowulf</title>
     <author xsi:nil="true"/>
 </book>
Run Code Online (Sandbox Code Playgroud)

该元素存在,但表示为一个空元素(我认为这是错误的,因为'空'并且null在语义上是不同的):

 <book>
     <title>Beowulf</title>
     <author/>
 </book>

 <!-- or: -->
 <book>
     <title>Beowulf</title>
     <author></author>
 </book>
Run Code Online (Sandbox Code Playgroud)

返回的标记中根本不存在该元素:

 <book>
     <title>Beowulf</title>
 </book>
Run Code Online (Sandbox Code Playgroud)

该元素有一个<null/>子元素(来自下面的TStamper):

 <book>
     <title>Beowulf</title>
     <author><null/></author>
 </book>
Run Code Online (Sandbox Code Playgroud)

是否有正确或规范的方式来表示这样的null价值?还有其他方法吗?

以上示例的XML是人为设计的,所以不要过多地阅读它.:)

xml null xml-nil

160
推荐指数
4
解决办法
18万
查看次数

我是什么:nil ="true"是什么意思?

我有一个xml,它的节点有i:nil ="true".那是什么意思?

例如:

<FirstName i:nil="true" />
Run Code Online (Sandbox Code Playgroud)

这是否意味着不同于:

<FirstName />
Run Code Online (Sandbox Code Playgroud)

如果是这样,有什么区别?

xml null xml-nil

58
推荐指数
3
解决办法
8万
查看次数

<a_element />和<a_element xsi:nil ="true"/>之间有什么区别?

你知道XML/XSD上的这些标签是否有区别?

<a_element /> and <a_element xsi:nil="true"/>
Run Code Online (Sandbox Code Playgroud)

例如:

<SpreadCurve>
      <Index>3M</Index>
      <IndexNumber>4587</IndexNumber>
      <BusinessArea xsi:nil="true" />
</SpreadCurve>

and

<SpreadCurve>
      <Index>3M</Index>
      <IndexNumber>4587</IndexNumber>
      <BusinessArea />
</SpreadCurve>
Run Code Online (Sandbox Code Playgroud)

这些是等价的吗?

如果我有一个XSD元素:

<xsd:element name="BusinessArea" type="xsd:string"/>
Run Code Online (Sandbox Code Playgroud)

这意味着它默认为xsi:nil ="false".这意味着它不会接受此元素的空值.

我怀疑是,它会接受这个吗?

<BusinessArea />
Run Code Online (Sandbox Code Playgroud)

这对XSD意味着什么?

最好的祝福

xml xsi xml-nil

22
推荐指数
2
解决办法
4万
查看次数

在SQL Server中从XML中选择空值

我正在尝试从具有null作为其中一个属性的XML中进行选择.而不是返回null,它返回0.我做错了什么?
请参阅下面的代码进行复制:

declare @a xml
select @a = '<TestSet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instace">
  <Element>
    <Property1>1</Property1>
    <Property2>1</Property2>
  </Element>
  <Element>
    <Property1 xsi:nil="true" />
    <Property2>2</Property2>
  </Element>
  <Element>
    <Property1>3</Property1>
    <Property2>3</Property2>
  </Element>
</TestSet>'

 select ParamValues.TaskChainerTask.query('Property1').value('.','int') as Property1,
        ParamValues.TaskChainerTask.query('Property2').value('.','int') as Property2
   from @a.nodes('(/TestSet/Element)') as ParamValues(TaskChainerTask)
Run Code Online (Sandbox Code Playgroud)

收益:

Property1   Property2
1           1
0           2
3           3
Run Code Online (Sandbox Code Playgroud)

这返回相同的东西:

declare @a xml
select @a = '<TestSet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instace">
  <Element>
    <Property1>1</Property1>
    <Property2>1</Property2>
  </Element>
  <Element>
    <Property1 xsi:nil="true" />
    <Property2>2</Property2>
  </Element>
  <Element>
    <Property1>3</Property1>
    <Property2>3</Property2>
  </Element>
</TestSet>'

 select ParamValues.TaskChainerTask.query('Property1').value('.','int') as Property1,
        ParamValues.TaskChainerTask.query('Property2').value('.','int') as Property2
   from @a.nodes('(/TestSet/Element)') as ParamValues(TaskChainerTask) …
Run Code Online (Sandbox Code Playgroud)

xml sql-server null xml-nil

11
推荐指数
4
解决办法
2万
查看次数

Jaxb marshaller总是写xsi:nil(即使在@XmlElement(required = false,nillable = true)时)

我有一个带有注释的java属性@XmlElement(required=false, nillable=true).当对象被编组为xml时,它始终与xsi:nil="true"属性一起输出.

是否有一个jaxbcontext/marshaller选项来指示编组器不要编写元素,而不是用它来编写xsi:nil

我找了答案,这样也有一个看代码,AFAICS,它总是会写xsi:nil,如果nillable = true.我错过了什么吗?

jaxb marshalling xml-nil

11
推荐指数
1
解决办法
2万
查看次数

抑制xsi:nil但在.Net中序列化时仍然显示空元素

我的ac #class有20多个字符串属性.我将其中的四分之一设置为实际值.我想序列化类并获得输出

<EmptyAttribute></EmptyAttribute>
Run Code Online (Sandbox Code Playgroud)

对于一个财产

public string EmptyAttribute {get;set;}
Run Code Online (Sandbox Code Playgroud)

我不希望输出

<EmptyAttribute xsi:nil="true"></EmptyAttribute>
Run Code Online (Sandbox Code Playgroud)

我正在使用以下课程

public class XmlTextWriterFull : XmlTextWriter
{
    public XmlTextWriterFull(string filename) : base(filename,Encoding.UTF8) { }

    public override void WriteEndElement()
    {
        base.WriteFullEndElement();
        base.WriteRaw(Environment.NewLine);
    }
}
Run Code Online (Sandbox Code Playgroud)

这样我就可以得到完整的标签.我只是不知道如何摆脱xsi:nil.

.net c# xml-serialization xml-nil

10
推荐指数
2
解决办法
1万
查看次数

XmlSerializer可以反序列化为Nullable <int>吗?

我想反序列化包含可以标记nil="true"为具有类型属性的类的元素的XML消息int?.我能让它工作的唯一方法是编写我自己的NullableInt实现类型IXmlSerializable.有没有更好的方法呢?

我写了完整的问题以及我在博客上解决它的方式.

nullable xml-serialization xml-nil

8
推荐指数
1
解决办法
8670
查看次数

序列化为XML时,在可空值类型上防止<xsi:nil ="true">

我在可序列化类中添加了一些可以为null的值类型.我执行序列化使用XmlSerializer但是当值设置为时null,我得到一个空节点xsi:nil="true".这是我在Xsi中找到的正确行为:nil属性绑定支持.

有没有办法关闭此选项,以便在值类型为时输出任何内容null

.net serialization xml-serialization xml-nil

8
推荐指数
3
解决办法
1万
查看次数

java unmarshalling - NULL值或缺少标记?

我在一个由unmarshaller设置的类中有一个nillable字段:

@XmlElement(name = "value", nillable = true)
private BigDecimal valueVariable;
Run Code Online (Sandbox Code Playgroud)

我的问题是我无法判断xml元素是否已被省略或设置为nil:

<value/>XML文件中缺少A.元素,不是必需的.
=>(valueVariable == null)为true

B. XML文件包含<value xsi:nil="true"/>
=>(valueVariable == null)为true

如果值为xsi:nil或标记丢失,如何判断非String变量?

更新 您可以看到2个好的解决方案,我更喜欢其中一个,但另一个也没关系!

java jaxb xml-nil

7
推荐指数
1
解决办法
2万
查看次数

如何在XSLT中检查XML值是否为nil

在XML文档中,我有一些地址数据..

<zip>08001</zip>
<zipPlus xsi:nil="true" />
Run Code Online (Sandbox Code Playgroud)

<zip>08002</zip>
<zipPlus>4512</zipPlus>
Run Code Online (Sandbox Code Playgroud)

如果有值要使用,只想打扰显示zip plus值.(出于这个例子的目的,我不在乎它是否是正确的zip加号格式)

试图在XSLT中使用以下代码段似乎无法正常工作,我认为这与我如何检查xsl:nil值有关

<EmployerZipCode>
      <xsl:value-of select="zip"/>
      <xsl:if test="zipPlus != @xsl:nil">
        <xsl:value-of select="'-'"/>
        <xsl:value-of select="zipPlus"/>
      </xsl:if>
      <xsl:value-of select="$sepChar"/> <!--this is a comma -->
</EmployerZipCode>
Run Code Online (Sandbox Code Playgroud)

我得到的结果总是如此

08001,
08002,
Run Code Online (Sandbox Code Playgroud)

08001,
08002-4512,
Run Code Online (Sandbox Code Playgroud)

在XSLT中检查nil-led元素的正确方法是什么?有没有其他方法来解决这个问题,并获得我想要的结果?

xml xslt null xml-nil

6
推荐指数
3
解决办法
1万
查看次数

标签 统计

xml-nil ×10

xml ×5

null ×4

xml-serialization ×3

.net ×2

jaxb ×2

c# ×1

java ×1

marshalling ×1

nullable ×1

serialization ×1

sql-server ×1

xsi ×1

xslt ×1