标签: xml-attribute

通过XML查找多个属性

我正在尝试在XML中搜索多个属性:

<APIS>
  <API Key="00001">
    <field Username="username1" UserPassword="password1" FileName="Filename1.xml"/>
    <field Username="username2" UserPassword="password2" FileName="Filename2.xml"/>
    <field Username="username3" UserPassword="password3" FileName="Filename3.xml"/>
  </API>
</APIS>
Run Code Online (Sandbox Code Playgroud)

我需要检查在"字段"中Username和UserPassword值是否与我的数据集值进行比较,是否有一种方法可以检查多个属性(AND条件)而无需编写自己的使用Flags和破坏的逻辑没有循环.

是否有XMLDoc的内置函数可以做到这一点?任何帮助,将不胜感激!

xml search xml-attribute

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

如何使用XmlSerializer指定XmlAttributes的顺序

XmlElement具有"Order"属性,您可以使用该属性在使用XmlSerializer进行序列化时指定属性的精确顺序(无论如何相互关联).

XmlAttribute是否有类似的东西?我只是想从类似的东西设置属性的顺序

public class bookingList
{
    [XmlElement(Order = 1)]
    public string error { get; set; }
    [XmlElement(Order = 2)]
    public int counter { get; set; }
    [XmlElement(ElementName = "booking", Order = 3)]
    public List<booking> bookings = new List<booking>();
}
Run Code Online (Sandbox Code Playgroud)

<MyType end="bob" start="joe" />
Run Code Online (Sandbox Code Playgroud)

这只是为了可读性,真的是我自己的利益.

xml serialization xml-serialization xml-attribute

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

如何使用XmlElementAttribute for List <T>?

我有一个这样的课:

public class Level
{
    [XmlAttribute]
    public string Guid { get; set; }
}

public class LevelList : List<Level>
{
}

public class Test
{
    public LevelList CalLevelList { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

使用XmlSerializer,我得到如下输出:

      <CalLevelList>
        <Level Guid="0de98dfb-ce06-433f-aeae-786b6d920aa6"/>
        <Level Guid="0de98dfb-ce06-433f-aeae-786b6d920aa7"/>
      </CalLevelList>
Run Code Online (Sandbox Code Playgroud)

这在技术上是正确的.但是,在不更改类名的情况下,我想使输出看起来像这样:

      <Levels>
        <L Guid="0de98dfb-ce06-433f-aeae-786b6d920aa6"/>
        <L Guid="0de98dfb-ce06-433f-aeae-786b6d920aa7"/>
      </Levels>
Run Code Online (Sandbox Code Playgroud)

我知道这可以通过属性完成,但无法弄清楚如何.当我向Test类添加一个属性时,如下所示:

    public class Test
    {
        [XmlElement("Levels")]
        public LevelList CalLevelList { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

输出非常令人惊讶:

<Levels Guid="0de98dfb-ce06-433f-aeae-786b6d920aa6"/>
<Levels Guid="0de98dfb-ce06-433f-aeae-786b6d920aa7"/>
Run Code Online (Sandbox Code Playgroud)

这意味着,我丢失了父节点.我指定的元素名称成为节点名称.为什么这个?如何使它工作?

.net c# xml serialization xml-attribute

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

如何使用JAXB以特殊顺序创建@XmlAttribute?

我有一个XML文件,它需要一个元素中的3个属性.如何按照我的意愿制作街道,拉链和城市属性的顺序?

<address street="Big Street" zip="2012" city="Austin">
</address>
Run Code Online (Sandbox Code Playgroud)
@XmlType(name="Street)
@XmlRootElement(name = "Street")
public class Street {

@XmlAttribute
private String name;

@XmlAttribute
private String type;

    ... set and get method
}
Run Code Online (Sandbox Code Playgroud)

jaxb xml-attribute

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

为什么SelectSingleNode返回null?

我正在使用包含类似于此的结构的XML文档:

<MT>
  <Events>
    <event id="1">
      <field name="blah" value="a_value" type="atype" />
      .
      .
      .
     </event>
   </Events>
 </MT>
Run Code Online (Sandbox Code Playgroud)

我目前正以这种方式将文件从文件加载到XML文档中:

XmlDocument xdoc = new XmlDocument();
xdoc.Load("somefile.xml");  //Successfully loads btw
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试运行下一行代码时,我遇到了一个问题,只有这个特定的文档:

xdoc.SelectSingleNode("//event[@id='1']"); //This returns a null 
Run Code Online (Sandbox Code Playgroud)

我是否在正确的轨道上猜测这是因为使用名为'id'的属性的问题或者我在代码中遗漏了某些内容而返回null?

c# xml xmldocument xml-attribute selectsinglenode

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

TypedArray无效

我正在学习自定义组件,我在使用自定义xml属性时遇到了一些麻烦.
我的自定义组件扩展了LinearLayout,在构造函数(public Custom(Context context, AttributeSet attrs))中我正在膨胀xml布局(2个按钮和1个EditText).
我也在values/attrs这个自定义属性中声明:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <declare-styleable name="Custom">
        <attr name="initValue" format="integer" />
        <attr name="stepSize" format="integer" />
        <attr name="maxValue" format="integer"/>
    </declare-styleable>
</resources>
Run Code Online (Sandbox Code Playgroud)


在我膨胀布局后的构造函数中,我正在尝试读取这样的自定义属性:

   if (attrs != null) {
                TypedArray ta = context.obtainStyledAttributes(attrs,
                        R.styleable.Custom, 0, 0);
                setInitValue(ta.getInt(R.styleable.Custom_initValue, 0));
                setStepSize(ta.getInt(R.styleable.Custom_stepSize, 1));
                setMaxValue(ta.getInt(R.styleable.Custom_maxValue, 5));         
                ta.recycle();
            }
Run Code Online (Sandbox Code Playgroud)


现在我尝试通过将其添加到xml布局来测试此自定义组件,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <here.is.my.package.Custom android:id="@+id/add"
        android:layout_width="wrap_content" android:layout_height="wrap_content"
        initValue="2" maxValue="7" stepSize="1" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)


这不起作用,我只得到默认值(0,1,5).我错过了什么或这是正常的行为?

android xml-attribute typedarray xml-layout

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

LINQ to XML忽略属性中的换行符

根据这个问题:

是否允许XML属性值中的换行符?

XML属性中的换行符完全有效(尽管可能不推荐):

<xmltag1>
    <xmltag2 attrib="line 1
line 2
line 3">
    </xmltag2>
</xmltag1>
Run Code Online (Sandbox Code Playgroud)

当我使用LINQ to XML(System.Xml.Linq)解析这样的XML时,这些换行符将以静默方式转换为空格' '字符.

有没有办法告诉XDocument.Load()解析器保留这些换行符?

PS:我正在解析的XML是由第三方软件编写的,因此我无法改变换行符的写入方式.

.net xml linq-to-xml xml-attribute c#-4.0

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

如何在C#中添加具有不同前缀/命名空间的xml属性?

我需要能够创建一个如下所示的XML Document:

 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <rootprefix:rootname 
     noPrefix="attribute with no prefix"
     firstprefix:attrOne="first atrribute"
     secondprefix:attrTwo="second atrribute with different prefix">

     ...other elements...

 </rootprefix:rootname>
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

XmlDocument doc = new XmlDocument();

XmlDeclaration declaration = doc.CreateXmlDeclaration("1.0", "UTF-8", "yes");
doc.AppendChild(declaration);

XmlElement root = doc.CreateElement("rootprefix:rootname", nameSpaceURL);
root.SetAttribute("schemaVersion", "1.0");

root.SetAttribute("firstprefix:attrOne", "first attribute");
root.SetAttribute("secondprefix:attrTwo", "second attribute with different prefix");

doc.AppendChild(root);
Run Code Online (Sandbox Code Playgroud)

不幸的是,我得到的带有第二个前缀的第二个属性根本没有前缀.它只是"attrTwo" - 就像schemaVersion属性一样.

那么,有没有办法在C#的根元素中为属性设置不同的前缀?

c# xml xml-attribute

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

如何保留元素属性的大小写?

我使用 jQuery 通过 document.createElement 函数动态创建 XML 文档。这对于创建结构非常有用,因为我能够利用 .appendTo 函数以正确的顺序动态放置正确的节点。当我设置我创建的元素的属性时,问题就出现了。一旦它们被创建,它们就会被设置为小写并且永远不会保留它们的大小写。这是不可接受的,因为属性将与下游的预期格式不匹配。

我尝试通过连接字符串来动态创建 XML 文档,但这不起作用,因为节点可以嵌套。

有什么方法可以使用 createElement 方法来保留每个属性的大小写吗?

html jquery xml-attribute

5
推荐指数
1
解决办法
1039
查看次数

C#Xml为什么我的属性不出现?

我有一个这样定义的类:

[XmlRoot(ElementName="request")]
public class Request
{
    #region Attributes
    [XmlAttribute(AttributeName = "version")]
    public string Version
    {
        get
        {
            return "1.0";
        }
    }

    [XmlAttribute(AttributeName = "action")]
    public EAction Action
    {
        get;
        set;
    }
    #endregion
Run Code Online (Sandbox Code Playgroud)

但是当我序列化它时,"version"不会出现在属性中(而"action"会出现).

出了什么问题?

c# xml-serialization xml-attribute

5
推荐指数
1
解决办法
471
查看次数